Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
460 Beiträge
 
Delphi XE4 Professional
 
#7

Re: Handle auf Vista unter XP nicht gefunden

  Alt 30. Mai 2008, 19:06
..vieleicht hab ich dich mißverstanden..

Wenn das Fenster ein´s von deinen ist.. dann lieg ich mit meiner Antwort richtig...

Wenn das Fenster von einer anderen Anwendung (Word, Excel Acrobat ect..) ist,
dann würd ich, wenn das Fenster den Focus hat:


Code:
var
SelfId : DWord;
ThreadId: DWord;
Attached: Boolean;
Fokus : HWnd;

begin


SelfId := GetCurrentThreadId;
ThreadId := GetWindowThreadProcessId(GetForegroundWindow, nil);

Attached := False;
if (ThreadId <> 0) and (ThreadId <> SelfId) then
Attached := AttachThreadInput(SelfId, ThreadId, True);

if Attached xor (ThreadId = SelfId) then
try
Fokus := GetFocus;
SendMessage(Fokus, WM_WassAuchImmer...



Wenn das Fenster von einer anderen Anwendung (Word, Excel Acrobat ect..) ist,
dann würd ich, wenn das Fenster NICHT den Focus hat:


Code:
function FindWindowByTitle(WindowTitle: string): Hwnd;
var
  NextHandle: Hwnd;
  NextTitle: array[0..260] of char;
begin
  NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST);
  while NextHandle > 0 do
  begin
    GetWindowText(NextHandle, NextTitle, 255);
    if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then
    begin
      Result := NextHandle;
      Exit;
    end
    else
     NextHandle := GetWindow(NextHandle, GW_HWNDNEXT);
  end;
  Result := 0;
end;








(c) by diversen Newsgroupusern ...


HTH

Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
  Mit Zitat antworten Zitat