![]() |
Windowstate eines fremden Programm ermitteln
Hallo!
Ich würde gerne den Windowstate eines fremden Programms ermitteln, also ob es minimiert ist, maximiert oder in meinem fall genauer: unsichtbar. In einem meiner letzten Threats habe ich schon gefragt wie genau ich Firefox starten kann und das Handle ermittle, das habe ich jetzt soweit hingekriegt (danke nochmal ;-) ![]() Allerdings soll Firefox auch versteckt starten! Dies ist allerdings leider nicht möglich (schein an Firefox zu liegen, habe in Autoit-Foren das selbe gelesen). Deshalb möchte ich zumindest per Timer ermitteln ob das Fenster sichtbar oder unsichtbar ist und entsprechend darauf reagieren! Falls jemand doch weiß wie man Firefox unsichtbar starten kann, wäre mir das natürlich noch lieber ;-) So geht es schonmal nicht:
Delphi-Quellcode:
ShExecInfo.cbSize := sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS; ShExecInfo.lpVerb := nil; ShExecInfo.lpFile := PChar(GetDefaultBrowser); ShExecInfo.lpDirectory := PChar(ExtractFilePath(GetDefaultBrowser)); ShExecInfo.lpParameters := PChar('-new-window ' + pageurl); ShExecInfo.nShow := SW_HIDE; ShellExecuteEx(@ShExecInfo); |
Re: Windowstate eines fremden Programm ermitteln
ich mache es so in meiner Anwendung:
Delphi-Quellcode:
PS: Du musst mal selber rumprobieren welcher Wert welcher State ist, ich weiß es auch nicht mehr genau!
function GetWindowState(WIndow : HWND): cardinal;
wp: tWindowPlacement; Window : HWND; begin result := - 1; if Window > 0 then begin wp.Length := SizeOf(tWindowPlacement); // muss sein für GetWindowsPlacement GetWindowPlacement(Window, @wp); result := wp.ShowCmd; // end; end; LG Marco! |
Re: Windowstate eines fremden Programm ermitteln
Probier mal folgendes:
Delphi-Quellcode:
const
state: Array[Boolean] of String = ( 'Nein', 'Ja' ); var WL: Cardinal; Status: String; begin WL := GetWindowLong( nh, GWL_STYLE ); // nh ist das Handle vom Notepad... Status := 'WS_VISIBLE: ' + state[(WL and WS_VISIBLE) = WS_VISIBLE] + #13#10 + 'WS_MAXIMIZE: ' + state[(WL and WS_MAXIMIZE) = WS_MAXIMIZE] + #13#10 + 'WS_MINIMIZE: ' + state[(WL and WS_MINIMIZE) = WS_MINIMIZE]; Label1.Caption := Status; |
Re: Windowstate eines fremden Programm ermitteln
Über ShellExecuteEx geht auch das unsichtbar starten. Ich glaube man musste neben dem Show Parameter noch ein anderes Flag in der Struktur setzen, damit es funktioniert.
|
Re: Windowstate eines fremden Programm ermitteln
Sehr gut danke, der Code von Aphton ging schonmal :-)
Aber kann mir jemand sagen wie dieses zusätzliche Flag sein soll um Firefox direkt unsichtbar zu starten? Das wäre natürlich eine viel sauberere Lösung... |
Re: Windowstate eines fremden Programm ermitteln
--Sorry-- :oops:
|
Re: Windowstate eines fremden Programm ermitteln
Genau das hat Aljoscha doch schon versucht :) siehe sein erstes Posting. Nichts für ungut.
|
Re: Windowstate eines fremden Programm ermitteln
ohh :oops:
Komisch :S Tretet das Problem auch auf, wenn du das ganze nur mit ShellExecute aufrufst? Edit1: Also ich hab das mit ShellExecuteEx probiert und es hat prima funktioniert :gruebel:
Delphi-Quellcode:
var
shellstruct: TShellExecuteInfo; begin FillChar( shellstruct, sizeof(shellstruct), 0 ); shellstruct.cbSize := Sizeof( shellstruct ); shellstruct.lpVerb := 'open'; shellstruct.lpFile := 'notepad'; shellstruct.nShow := SW_SHOW; ShellExecuteEx( @ShelLStruct ); |
Re: Windowstate eines fremden Programm ermitteln
Also auch mit Shellexecute kann ich firefox.exe nicht unsichtbar starten... :(
Das Fenster unsichtbar zu machen ist kein Problem, aber unsichtbar starten geht scheinbar nicht. Zumindest nicht so wie ich es versucht habe ;-) |
Re: Windowstate eines fremden Programm ermitteln
Nur so als kleine Info:
Wenn Du Browser unsichtbar starten willst, stell Dich auf lustige Alarmmeldungen diverser Behaviour Blocker oder HIPS ein. Es gibt keinen rationalen Grund wieso man den Browser unsichtbar starten möchte, ausser eben an Firewall und Co vorbei Daten auszutauschen. Entsprechend wird es als malwaretypisches Verhalten erkannt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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