AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Tastaturkommandos an ein Handle senden (Remote)
Thema durchsuchen
Ansicht
Themen-Optionen

Tastaturkommandos an ein Handle senden (Remote)

Ein Thema von little_budda · begonnen am 3. Jan 2008 · letzter Beitrag vom 5. Jan 2008
Antwort Antwort
Benutzerbild von little_budda
little_budda

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

Re: Tastaturkommandos an ein Handle senden (Remote)

  Alt 5. Jan 2008, 07:41
Hallo,

ich habe jetzt das Windows Handle verwendet.
Hier der Code:
Delphi-Quellcode:
const sWinFinkExe : string = 'WINFx4.exe';
var frm_main : Tfrm_main;
      extWindowsHandle : THandle;

...

function GetWindowThreadProcessId(hWnd: HWND; var dwProcessId: DWORD): DWORD; stdcall; external 'user32.dllname 'GetWindowThreadProcessId';

function MyEnumWindowProc(AHandle: THandle; LParam: LongWord): boolean; stdcall;
var ProcessID: THandle;
begin
  ProcessID := 0;
  GetWindowThreadProcessID(AHandle, ProcessID);
  Result := not (ProcessID = LParam);
  if not Result then extWindowsHandle := AHandle;
end;

function GetWindowHandleByExeName(const AExeName: string): THandle;
var SnapShot: THandle;
    p: TProcessEntry32;
    ProcessHandle: THandle;
begin
  extWindowsHandle := 0;
  ProcessHandle := 0;
  p.dwSize := SizeOf(p);
  SnapShot := CreateToolhelp32Snapshot(TH32CS_SnapProcess, 0);
  try
    if Process32First(SnapShot, p) then
      repeat
      if AnsiLowerCase(AExeName) = AnsiLowerCase(p.szExeFile) then
        ProcessHandle := p.th32ProcessID;
      until (ProcessHandle <> 0) or not Process32Next(SnapShot, p);
    EnumWindows(@MyEnumWindowProc, ProcessHandle);
    Result := extWindowsHandle;
  finally
    CloseHandle(SnapShot);
  end;
end;

...

procedure Tfrm_main.btn_sendKeyClick(Sender: TObject);
var iSendKeyCode : integer;
begin
  extWindowsHandle := GetWindowHandleByExeName(sWinFx4Exe);
  iSendKeyCode:= 68;

  SendMessage (extWindowsHandle, // Handle des externen Programmes
               WM_CHAR, // Übergabe = Keycode
               68, // KeyCode von "ALT+D" (DateiMenü)
               0 // Dritter Parameter
              );
end;
Aber es klappt trotzdem nicht.
Ich habe den KeyCode schon mal über eine Schleife höchzählen lassen (0-255)
falls mein KeyCode falsch sein sollte aber meine externe Anwendung reagiert nicht.

Im Forum habe ich gelesen das es statt über "SendMessage" auch über "PostMessage" gehen soll.?.?
Leider kenne ich den Unterschied nicht.

Vielleicht hat ja noch jemand eine Idee 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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 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