AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Windowstate eines fremden Programm ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Windowstate eines fremden Programm ermitteln

Ein Thema von Aljoscha · begonnen am 10. Jun 2009 · letzter Beitrag vom 11. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
Aljoscha

Registriert seit: 30. Dez 2004
97 Beiträge
 
#1

Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 20:18
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 http://www.delphipraxis.net/internal...t.php?t=159303 ).
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);
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#2

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 20:22
ich mache es so in meiner Anwendung:

Delphi-Quellcode:
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;
PS: Du musst mal selber rumprobieren welcher Wert welcher State ist, ich weiß es auch nicht mehr genau!

LG Marco!
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 20:43
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;
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 20:58
Ü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.
  Mit Zitat antworten Zitat
Aljoscha

Registriert seit: 30. Dez 2004
97 Beiträge
 
#5

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 21:06
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...
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 21:16
--Sorry--
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#7

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 21:22
Genau das hat Aljoscha doch schon versucht siehe sein erstes Posting. Nichts für ungut.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 21:29
ohh

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
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 );
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Aljoscha

Registriert seit: 30. Dez 2004
97 Beiträge
 
#9

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 21:47
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
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Windowstate eines fremden Programm ermitteln

  Alt 10. Jun 2009, 22:14
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.
Fridolin Walther
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz