![]() |
Programm ferngesteuert aktivieren
Hallo @all
Folgendes Problem: Habe ein Programm (nicht von mir) das den Bildschrim kompett ausfüllt und ich möchte zwischen meinem und dem anderen Programm hin und herwechseln. Meine Idee ist ein Programm was die Funktionstasten sagen wir F7 und F8 überwacht und dann zwischen den beiden Programmen schaltet. So weit so gut habe also die Tasten abgefangen und bekomme auch das Handle auf das Hauptfenster jetzt will ich das Fenster in den Vordergrund holen mit SetForgroundWindow das geht auch jedenfals bei Win NT bei Win 2000 nicht warum Also bei Win 2000 wird mein Hauptfenster nach vorn gebracht aber verdeckt dann andere Modale Fenster. schei..... Frage wie kann ich es so machen wie bei Windows ALT-Tab Programmwechsel denn das Programm was den Bildschirm verdeckt schaltet auch einige Funktionen von Windows ab auch ALT+Tab und den Taskmanager. Hat was mit Sicherheit zutun das Programm ist eine Maschinensteuerung und mein Programm macht die Auswertung für das Büro soll aber auch an der Maschine laufen. (Ich habe keinen Plan wie das Programm das macht ist aber so und ich will und darf das nicht ändern) Hat jemand eine Idee :gruebel: |
Re: Programm ferngesteuert aktivieren
versuch mal BringWindowToTop() oder SetFucus()
|
Re: Programm ferngesteuert aktivieren
Zitat:
Aber ich habe da noch was gefunden. Mit GetWindow bekomme ich alle Fenster die das Hauptfenster als Owner haben und wenn ich das weiterdenke komme ich an alle Fenster und kann die Owner Reihenfolge nutzen um die Fenster in der richtigen Reihenfolge anzuzeigen oder nicht. Warte mal auf einspruch von jemanden hier und teste mal ob das funktioniert. :gruebel: :drunken: alles wird gut :-D |
Re: Programm ferngesteuert aktivieren
Hallo,
zwischen Programmen kannst du mit Alt + Tab wechseln. mfg freak :coder: |
Re: Programm ferngesteuert aktivieren
Hi freak,
Zitat:
Greetz alcaeus |
Re: Programm ferngesteuert aktivieren
Hallo.
Vielleicht hilft's:
Delphi-Quellcode:
Enjoy
function ForceForegroundWindow(hwnd: THandle): WordBool;
const SPI_GETFOREGROUNDLOCKTIMEOUT = $2000; SPI_SETFOREGROUNDLOCKTIMEOUT = $2001; var ForegroundThreadID: DWORD; ThisThreadID: DWORD; timeout: DWORD; begin if IsIconic(hwnd) then ShowWindow(hwnd, SW_RESTORE); if GetForegroundWindow = hwnd then Result := True else begin // Windows 98/2000 doesn't want to foreground a window when some other // window has keyboard focus if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and ((Win32MajorVersion > 4) or ((Win32MajorVersion = 4) and (Win32MinorVersion > 0)))) then begin // Code from Karl E. Peterson, [url]www.mvps.org/vb/sample.htm[/url] // Converted to Delphi by Ray Lischner // Published in The Delphi Magazine 55, page 16 Result := False; ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil); ThisThreadID := GetWindowThreadPRocessId(hwnd, nil); if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then begin BringWindowToTop(hwnd); // IE 5.5 related hack SetForegroundWindow(hwnd); AttachThreadInput(ThisThreadID, ForegroundThreadID, False); Result := (GetForegroundWindow = hwnd); end; if not Result then begin // Code by Daniel P. Stasinski SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0), SPIF_SENDCHANGE); BringWindowToTop(hwnd); // IE 5.5 related hack SetForegroundWindow(hWnd); SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(timeout), SPIF_SENDCHANGE); end; end else begin BringWindowToTop(hwnd); // IE 5.5 related hack SetForegroundWindow(hwnd); end; Result := (GetForegroundWindow = hwnd); end; end; { ForceForegroundWindow } |
Re: Programm ferngesteuert aktivieren
Zitat:
Aber was mich fröhlich stimmt ist das dieses Programm nur aus dem Hauptfenster besteht also irgendwie sind die anderen Fenster also z.B. Messages oder so keine Fenster sind irgendwie Panel oder so jedenfals in dem Teil bekomme ich alles richtig angezeigt immer. :mrgreen: @ all THX :thumb: für die Hilfe werde alles testen aber erst morgen !!! PS: :coder2: Habe da einen einfachen Plan ich sende meinen Programm einfach eine selbstdefinierte Message dann mach ich das aktivieren im Progamm obwohl das mit dem GetWindow mir schonmal das erste (Hauptfenster) und das letzte z.B. eine Passwortabfrage richtig zurückgibt. (Aber alles erst Morgen @all :cheers: bis morgen) |
Re: Programm ferngesteuert aktivieren
Hallo zusammen (neuer Tag neues glück ;-))
@ipworks THX Der Code von dir sieht dem Code den ich auf dem Entwicker-Forum gefunden habe sehr ähnlich. Mein Code ist also auch fast das Gleiche ich sehe es mir jetzt mal genauer an. Hat jemand noch eine Idee ? |
Re: Programm ferngesteuert aktivieren
@ipworks
Dein Code läuft :thumb: THX! :gruebel: Habe wohl bei der ersten Version was falsch gemacht jetzt gehts super gut. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 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