Einzelnen Beitrag anzeigen

Benutzerbild von little_budda
little_budda

Registriert seit: 5. Mai 2006
Ort: Velbert
246 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Tastaturkommandos an ein Handle senden (Remote)

  Alt 4. Jan 2008, 07:21
Hallo,

habe den Tipp von 1234588 ausprobiert.
Klappt nicht.

Ich poste hier noch mal meinen Code.
Vielleicht klappt ja auch die Handle-Ermittlung nicht ... ? ...
Delphi-Quellcode:
var frm_main: Tfrm_main;
    extProgHandle: THandle;

...

function GetProcessID(Exename: string): DWORD;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := 0;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
    begin
      while Process32Next(hProcSnap, pe32) = true do
      begin
        if pos(Exename, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID;
      end;
    end;
    CloseHandle(hProcSnap);
  end;
end;

function GetProcessHandleFromID(ID: DWORD): THandle;
begin
  result := OpenProcess(SYNCHRONIZE, False, ID);
  CloseHandle(result);
end;

...

procedure Tfrm_main.btn_getHandleClick(Sender: TObject);
begin
  extProgHandle := GetProcessHandleFromID(GetProcessID('WINFx4.exe'));
  if extProgHandle = 0 then
    begin
      Label1.Caption := 'Fx4 läuft nicht';
      btn_sendKey.enabled := false;
    end
  else
    begin
      Label1.Caption := 'Fx4 läuft';
      btn_sendKey.enabled := true;
    end;
  Application.HandleMessage;
end;


procedure Tfrm_main.btn_sendKeyClick(Sender: TObject);
begin
  SendMessage (extProgHandle, // Handle des externen Programmes
               WM_CHAR, // Übergabe = Keycode
               68, // KeyCode von "ALT+D" (DateiMenü)
               0 // Dritter Parameter
              );
end;
Vielleicht hat ja noch jemand einen Tipp für mich.
Holger
Glück findet sich nicht im Code
Gefahren werden ist nur solange schön wie man selbst nicht lenken möchte ...
  Mit Zitat antworten Zitat