Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Maximieren eines geöffneten Programms

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Maximieren eines geöffneten Programms (2080 mal gelesen)

Ex-Mitglied

erstellt am: 24. Sep. 2004 11:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

HAllo Leute,

ich habe ein Problem mit dem Erkennen eines geöffneten Programms.

Ich möchte beim Starten eines Programms (VB6.0 kompiliert, also nicht VBA) ermitteln ob dieser Prozess läuft (das habe ich mit dem App-Objekt geschafft) und danach möchte ich das Programm aus der Taskleiste maximieren oder in Front stellen.

Wäre dankbar für Tipps.

Jürgen

BloodyMess
Mitglied
Applicationingenieur


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 24. Sep. 2004 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jürgen,

wie Du ermittelst, ob ein Prozess läuft siehst du hier ...
http://ww3.cad.de/foren/ubb/Forum259/HTML/000319.shtml

und eine Applikation kannst Du mit App.visible = true sichtbar machen

um Excel z.B. minimiert zu starten benutze dies

Code:
excelapp.windowstate = Excel.XlWindowState.xlMinimized

Schönes WE .. Gruß TP

------------------

Code:
For Each Person In This.Forum
    TP.Say "have a nice day!"
Next Person

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 24. Sep. 2004 12:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Danke für die Antwort.

Einiges sieht gut aus. Was ich nicht so richtig verstehe ist:
1. Wenn ich ein Programm starte, habe ich das eine APP-Objekt
2. Wenn ich das Programm nun ein zweites Mal starte, dann habe ich doch ein anderes APP-Objekt oder? Wenn das so wäre, dann kann ich nicht mit App.visible arbeiten.

Jürgen

BloodyMess
Mitglied
Applicationingenieur


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 24. Sep. 2004 12:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jürgen,

Code:
Dim ExcelApp as Excel.Application
Set ExcelApp = New Excel.Application

ExcelApp.Visible = true



Das ist für ein Excel-Object.

Das Object solltest Du nach dem beenden deines Programmes auch terminieren ...  ich mach das so ..

Code:
ExcelApp.Quit
Set ExcelApp = Nothing

.. somit sollte das Excel-Object auch wieder aus deiner Prozessliste verschwunden sein.

Oder hab ich da jetzt was falsch verstanden?

Gruß TP

------------------

Code:
For Each Person In This.Forum
    TP.Say "have a nice day!"
Next Person

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 25. Sep. 2004 10:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo TP,

ich glaube schon das Du was falsch verstanden hast.

Wie eine Instanz eines WORD bzw. EXCEL's zerstört wird ist mir bekannt. Das ist auch nicht mein Problem.

OK: Ich habe mich vielleicht falsch ausgedrückt.

stell Dir vor Du schreibst ein Programm mit VB (nicht VBA), kompilierst es und rufst es ganz normal über Start-Programme und so auf. Also nicht im AutoCAD oder ähnlich, sondern ein eigenständiges Programm. Du machst auch keine Instanz auf irgend ein anderes Programm wie Word z.B.
Und nun gehst Du hin minimierst dieses Programm. Da Du es vergessen hast, dass Du es minimiert hast, rufst Du es wieder mit Start-Programme und so auf.
Jetzt kommt mein Problem:
1. Wie erkenne ich beim zweiten Aufruf des Programms, dass es schon läuft?
2. Wie maximiere ich das vorher minimierte Programm?
3. Wie kann ich Daten dem Programm übergeben?

Danke für Eure Bemühungen.
Jürgen

BloodyMess
Mitglied
Applicationingenieur


Sehen Sie sich das Profil von BloodyMess an!   Senden Sie eine Private Message an BloodyMess  Schreiben Sie einen Gästebucheintrag für BloodyMess

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 25. Sep. 2004 19:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jürgen,

zu 1 tens ...
Benutze bitte diesen Link http://ww3.cad.de/foren/ubb/Forum259/HTML/000319.shtml

.. und dann erweiterst Du einfach diesen Teil

Code:
If Left$(aa, InStr(aa, Chr$(0)) - 1) = "acad.exe" Then
MsgBox "AutoCAD läuft"
End If
um eine Funktion oder Schleife oder was auch immer, was Dir halt zählt, wie oft das Programm läuft. '1' bekommst Du mindestens zurück, da dein Programm schon läuft, wenn er die Prozesse überprüft.

zu 2 tens
In meinem Falle war das Object Excel, bei Dir ist es halt dein Formular.

Code:
Form1.WindowState = vbMaximized

und zu 3 tens
wo kommen die Daten her und wo in deinem Programm sollen Sie verfügbar sein?

Gruß TP

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 27. Sep. 2004 11:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich glaube du brauchst das hier

Private Sub Form_Load()
    If App.PrevInstance Then
        PrevActivate
        Exit Sub
    End If
   
    'na dann mach was ...
End Sub

mehr dazu gibts hier (z.B: auch die Funktion PrevActivate) http://vb-tec.de/appactiv.htm

------------------
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 27. Sep. 2004 11:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

noch einfacher was dazu gefunden

Public Sub Main()
    '  Unter "Projekt" -> "Eigenschaften" ->
    '  "Allgemein" -> "Startobjekt" muß "Sub Main"
    '  ausgewählt sein!
   
    '  Läuft bereits eine Instanz meiner Anwendung?
    If App.PrevInstance Then
        '  Ja, diese Instanz in den Vordergrund holen
        '  'App.EXEName' muß durch die Beschriftung
        '  der Form (meist MDI.Caption) ersetzt werden,
        '  welche angezeigt wird.
        VBA.Interaction.AppActivate App.EXEName
    Else
        '  Nein, eine neue Instanz starten
        '  Hier die Hauptform (meist MDIForm) starten
    End If
End Sub


siehe dazu http://www.activevb.de/rubriken/faq/app-previnstance.html

------------------
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz