Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Kommunikation Service und Anwendung unter Vista (https://www.delphipraxis.net/94223-kommunikation-service-und-anwendung-unter-vista.html)

SirThornberry 19. Jun 2007 12:47

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.

JonnyGuitar 19. Jun 2007 12:53

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.

SirThornberry 19. Jun 2007 12:57

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:

JonnyGuitar 20. Jun 2007 11:25

Re: Kommunikation Service und Anwendung unter Vista
 
muss ich dann eigentlich beim createmutex auch diesselben security attributes setzen wie beim createfilemapping?

mfg Jonny

Dezipaitor 20. Jun 2007 14:51

Re: Kommunikation Service und Anwendung unter Vista
 
wenn verschiedene Leute darauf zugreifen sollen, dann schon.

SirThornberry 20. Jun 2007 15:12

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.

JonnyGuitar 20. Jun 2007 16:18

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:
if not DuplicateHandle(GetCurrentProcess, FMutexHandle,InjectHandle, @InjectHandle, 0, FALSE, DUPLICATE_SAME_ACCESS) then
  RaiseLastWin32Error;
bekomme ich immer einen init 6 fehler. langsam weiss ich echt nicht mehr weiter? hat einer eine idee?


mfg Jonny

Dezipaitor 20. Jun 2007 17:01

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.

JonnyGuitar 21. Jun 2007 11:14

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:
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;
danach versuche ich es mit duplicatehandle folgendermassen:

Delphi-Quellcode:
if not DuplicateHandle(GetCurrentProcess, FMutexHandle,GetCurrentProcess, @ProcessHandle, 0, FALSE, DUPLICATE_SAME_ACCESS) then
  RaiseLastWin32Error;
nachdem ich das gemacht habe versuche ich mich mit sender.exe auf den gleichen mutex zu connected allerdings OHNE duplicatehandle.

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 16:24 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz