| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Ist eine Anwendung minimiert? (2247 mal gelesen)
|
JPF Mitglied Programmierer
 
 Beiträge: 128 Registriert: 17.08.2001 Windows 10PRO HP Z420 Workstation CAD/CAM Experte für CATIA V5 VB2010
|
erstellt am: 13. Mai. 2009 07:25 <-- editieren / zitieren --> Unities abgeben:         
Hallo und guten Morgen, gibt es eine API bzw. ein Beispiel, wie man herraus finden kann ob eine Anwendung minimiert ist! Habe bisher nur etwas gefunden eine Anwendung zu minimieren od. maximieren! Code Beispiel kann für VB6 oder VB2005 sein Gruss JPF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24
|
erstellt am: 13. Mai. 2009 08:25 <-- editieren / zitieren --> Unities abgeben:          Nur für JPF
|
JPF Mitglied Programmierer
 
 Beiträge: 128 Registriert: 17.08.2001 Windows 10PRO HP Z420 Workstation CAD/CAM Experte für CATIA V5 VB2010
|
erstellt am: 13. Mai. 2009 09:23 <-- editieren / zitieren --> Unities abgeben:         
Hallo Arne, generell ja. Ich habe mich aber nicht korrekt ausgedrückt. Ich suche eine Funktion, um zuerkennen ob eine fremde Anwendung(Fenster) minimiert ist. Diese Funktion sollte true oder false zurück liefern. Gruss JPF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24
|
erstellt am: 13. Mai. 2009 10:18 <-- editieren / zitieren --> Unities abgeben:          Nur für JPF
Hatte ich auch so verstanden? getObject (.....) und dann das Objekt auswerten. Hinterher kannst Du es ja wieder freigeben. True oder False reicht nicht, da ja auch noch Vollbild über ist. ------------------ APeters@BSS-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 13. Mai. 2009 10:58 <-- editieren / zitieren --> Unities abgeben:          Nur für JPF
Hallo JPF, ein kleines Beispiel für's Notepad: Code: Option ExplicitPrivate Declare Function GetWindowPlacement Lib "user32.dll" ( _ ByVal hWnd As Long, _ ByRef lpwndpl As WINDOWPLACEMENT) As Long Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Type POINTAPI x As Long y As Long End Type Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type WINDOWPLACEMENT Length As Long flags As Long showCmd As Long ptMinPosition As POINTAPI ptMaxPosition As POINTAPI rcNormalPosition As RECT End Type Private Const GC_CLASSNAMENOTEPAD = "Notepad" Private Const SW_SHOWMINIMIZED = 2 Private Sub Main() Dim WinEst As WINDOWPLACEMENT Dim hWnd As Long hWnd = FindWindow(GC_CLASSNAMENOTEPAD, vbNullString) If CBool(hWnd) Then WinEst.Length = Len(WinEst) Call GetWindowPlacement(hWnd, WinEst) If WinEst.showCmd = SW_SHOWMINIMIZED Then MsgBox "Notepad ist Minimiert!" Else MsgBox "Notepad ist nicht geöffnet!" End If End Sub
------------------ Gruß Nepumuk  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 13. Mai. 2009 11:29 <-- editieren / zitieren --> Unities abgeben:          Nur für JPF
Oder VB-simpel ************************************************************** Sub main() Dim o_app As Object On Error Resume Next Err.Clear Set o_app = GetObject(, "Solidedge.application") If Err <> 0 Then MsgBox "SE läuft nicht" Else MsgBox o_app.WindowState End If on error goto 0 set o_app = nothing End Sub **************************************************************
------------------ APeters@BSS-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JPF Mitglied Programmierer
 
 Beiträge: 128 Registriert: 17.08.2001
|
erstellt am: 13. Mai. 2009 11:43 <-- editieren / zitieren --> Unities abgeben:         
Danke Arne, aber die Anwendung, welche ich kontrollieren möchte ist CATIA. Und Catia gibt kein CATIA.Windowstate zurück! Danke Nepumuk, Das Beispiel funktioniert in VB6. Für VB2005 musste ich es ein wenig abändern. Gruss JPF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arne Peters Ehrenmitglied V.I.P. h.c. CAD Dokumentation / Training / Programmierung / Datenbanken
     
 Beiträge: 7545 Registriert: 05.2002.24 Solid Edge Seminarunterlagen Training, Beratung, Programmierung
|
erstellt am: 13. Mai. 2009 11:50 <-- editieren / zitieren --> Unities abgeben:          Nur für JPF
|
JPF Mitglied Programmierer
 
 Beiträge: 128 Registriert: 17.08.2001
|
erstellt am: 14. Mai. 2009 06:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo Arne, ich habe mir diesen Link mal angesehen. Und kann folgendes dazu sagen: 1. Catia kann mit mehreren Fenstern arbeiten. CATIA.Application.ActiveWindow.Windowstate = catWindowStateMinimized Dieser Befehl minimiert nur das aktive Fenster in Catia. 2. CATIA.Visible=False Diese Befehl macht die Catia-Anwendung unsichtbar, Catia verschwindet sogar aus der Taskleiste. Wenn jetzt so wie im meinem Fall mein Programm abstürzen würde (irgendwas passiert ja immer mal), dann bleibt Catia im Windows-Nirwana. Es kann dann nur noch der Prozess abgeschossen werden. Gruss JPF Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VBSpawn Mitglied Programmierer
  
 Beiträge: 514 Registriert: 23.08.2005 Sorgfältige Planung ersetzt niemals pures Glück.
|
erstellt am: 14. Mai. 2009 07:49 <-- editieren / zitieren --> Unities abgeben:          Nur für JPF
Hallo zusammen, also du musst eigentlich nur die Funktion von Nepumuk ( Call GetWindowPlacement(hWnd, WinEst) ) mit der hier http://support.microsoft.com/?scid=kb%3Ben-us%3B183009&x=9&y=12 kombinieren. Wenn ich dich richtig verstanden habe ist Catia keine MDI Anwendung... das würde die Kontrolle der einzelnen Prozesse erschweren... da Funktionen wie z.b.: GetObject immer auf eine bestimmte Instanz der Anwendung erfolgen... (z.b. 2 x Winword manuell starten und ein gezieltes GetObject wird fummelig... ist aber ein anderes Thema)
Gruß Micha ------------------ Stell dir vor, es geht, und keiner kriegts hin. Zitat: Interpunktion und Orthographie des Postings sind frei erfunden. Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |