![]() |
Re: anderes Programm beenden
Ist bei mir nicht drinne: Delphi 6 Personal.
|
Re: anderes Programm beenden
Bei mir schon, ist aber glaube ich auch nicht wirklich ne API Funktion...wirst wohl recht haben...
eine Frage noch Luckie, wenn ich durch Klicken auf ein inaktives Fenster dem Fenster den Focus gebe, wird dann auch ne Windows Botschaft gesendet bzw. welche? |
Re: anderes Programm beenden
an das Fenster: WM_ACTIVATE und wohl noch WM_PAINT und WM_NCPAINT, Das dürften die wichtigsten sein.
|
Re: anderes Programm beenden
Zitat:
|
Re: anderes Programm beenden
Zitat:
So würde es gehen...zumindest versuchsweise...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var AppHWnd: HWND; begin AppHWnd := FindWindow(nil, 'Unbenannt - Editor'); if IsWindow(AppHWnd) then BringWindowToTop(AppHWnd)else ShowMessage('Pech gehabt') end; |
Re: anderes Programm beenden
Irgendwann mal war es BringWindowToTop. Dann SetForegroundWindow. Mit der Einführung von IE4, ging es nur noch, wenn du du dich in den Thread eingehackt hast. Kann das Verhalten von den Microsoft Entwicklern irgendwie nicht nachvollziehen. Aber die werden sich bestimmt etwas dabei gedacht haben.
Delphi-Quellcode:
Hab ich jetzt so aus einem alten Projekt kopiert. Sollte aber immer noch funktionieren.
procedure TTaskMgrForm.ForceSetForegroundWindow(AHandle: HWND);
var AppHWnd: HWND; AppThreadId: DWORD; ThisThreadId: DWORD; TimeOut: DWORD; begin if GetForegroundWindow <> AHandle then begin BringWindowToTop(AHandle); SetForegroundWindow(AHandle); AppHWnd := GetForegroundWindow; if AppHWnd <> AHandle then begin AppThreadId := GetWindowThreadProcessId(AppHWnd, nil); ThisThreadId := GetCurrentThreadId; if (AppThreadId <> 0) and (ThisThreadId <> 0) then begin if AttachThreadInput(ThisThreadId, AppThreadId, True) then begin BringWindowToTop(AHandle); SetForegroundWindow(AHandle); AttachThreadInput(ThisThreadId, AppThreadId, False); end; if GetForegroundWindow <> AHandle then begin SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @TimeOut, 0); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0), SPIF_SENDCHANGE); BringWindowToTop(AHandle); SetForegroundWindow(AHandle); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(TimeOut), SPIF_SENDCHANGE); end; end; end; end; end; |
Re: anderes Programm beenden
Super, Danke!!
Und schönes Wochenende noch... Gambit |
Re: anderes Programm beenden
Shit, geht doch nicht, weil Premiere je nach Projekt seinen Fenstertitel ändert...
Gambit |
Re: anderes Programm beenden
Zitat:
|
Re: anderes Programm beenden
Tja, da bin ich wieder dumm...bei STunnel hast du ja für den Klassennamen das Gleiche verwendet wie für den Fenstertitel. Bei Notepad beispielsweise klappt es, wenn ich als Klassenname nur 'notepad' eingebe.
Wie bekomme ich denn den Klassennamen heraus? Gruß Gambit |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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