![]() |
Re: Kommunikation Service und Anwendung unter Vista
über benutzerdefinierte Messages müsste es doch möglich sein?! Einfach ein Broadcast und die richtige Anwendung wirds dann schon verstehen.
|
Re: Kommunikation Service und Anwendung unter Vista
meinst du über eine windowmessage? also wm_user + 1 z.b.?
das hatte bei mir unter vista gar nicht mehr geklappt, da der austausch zwischen service und desktop so arg beschnitten worden ist. |
Re: Kommunikation Service und Anwendung unter Vista
ups, sorry. War ein Fehler meinerseits. Das ging schon unter XP nicht das man zwischen verschiedenen Desktops und Services messages austauschen kann :oops:
|
Re: Kommunikation Service und Anwendung unter Vista
muss ich dann eigentlich beim createmutex auch diesselben security attributes setzen wie beim createfilemapping?
mfg Jonny |
Re: Kommunikation Service und Anwendung unter Vista
wenn verschiedene Leute darauf zugreifen sollen, dann schon.
|
Re: Kommunikation Service und Anwendung unter Vista
was auch ginge wäre das ganze über winsockets zu machen. Also Per Webinterface etc., wie es router etc. eben auch machen.
|
Re: Kommunikation Service und Anwendung unter Vista
@SirThornberry: von sockets wurde mir abgeraten, da zu unsicher. aber ich möchte jetzt keinen glaubenskrieg entfachen :)
nun zurück zu mmf und mutex: ich habe es nun auch geschafft die processid von meiner desktop anwendung aus dem service heraus zu bekommen. wenn ich nun wie Dezipaitor mir geraten hat folgendes versuche:
Delphi-Quellcode:
bekomme ich immer einen init 6 fehler. langsam weiss ich echt nicht mehr weiter? hat einer eine idee?
if not DuplicateHandle(GetCurrentProcess, FMutexHandle,InjectHandle, @InjectHandle, 0, FALSE, DUPLICATE_SAME_ACCESS) then
RaiseLastWin32Error; mfg Jonny |
Re: Kommunikation Service und Anwendung unter Vista
der dritte Parameter muss das Prozesshandle sein. Du verwendest aber denselben Wert für Parameter 3 und 4.
Verwende GetCurrentProcess für den Quellprozess und versende es dann an den Zielprozess, der es dann als erster Parameter verwendet. Der dritte Parameter ist dann direkt die Funktion GetCurrentProcess. |
Re: Kommunikation Service und Anwendung unter Vista
ich mal wieder :)
habe das jetzt folgendermassen versucht zu lösen: der service guckt, ob eine anwendung namens sender.exe läuft mit folgendem code:
Delphi-Quellcode:
danach versuche ich es mit duplicatehandle folgendermassen:
function TTestService.GetSenderProcessHandle:Cardinal;
var h: THandle; rec: TProcessEntry32W; ProcessHandle: THandle; begin Result := 0; h := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); try rec.dwSize := sizeof(rec); if Process32FirstW(h, rec) then repeat if Uppercase(string(rec.szExeFile)) = UpperCase('sender.exe') then begin Result := rec.th32ProcessID; ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, False, rec.th32ProcessID); Result := ProcessHandle; CloseHandle(ProcessHandle); Break; end; until not Process32NextW(h, rec); finally CloseHandle(h); end; end;
Delphi-Quellcode:
nachdem ich das gemacht habe versuche ich mich mit sender.exe auf den gleichen mutex zu connected allerdings OHNE duplicatehandle.
if not DuplicateHandle(GetCurrentProcess, FMutexHandle,GetCurrentProcess, @ProcessHandle, 0, FALSE, DUPLICATE_SAME_ACCESS) then
RaiseLastWin32Error; die komponente merkt serviceseitig merkt leider nicht, dass sich einer in diesen speicherbereich connected hat? hat noch einer eine idee was ich anders machen könnte? mfg Jonny |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz