Announcement

Collapse
No announcement yet.

Pozess und Instanzen einfangen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Pozess und Instanzen einfangen

    Guten Tag Forum

    Könnt Ihr mir vielleicht Helfen.

    Ich schreibe gerade ein Programm, und befinde mich vor folgendem VB.Net-Problem.

    Leider kann es bei mir vorkommen das Zeitweise mehere z.B. Excel-Instanzen offen sind. Mit
    [highlight=vbnet]
    Dim sdpProzess() As Process = System.Diagnostics.Process.GetProcessesByName("EXC EL")
    [/highlight]

    [highlight=vbnet]
    z.B. ubound(sdpProzess) = 2
    sdpProzess(0).id = 6060: sdpProzess(0).MainWIndowsTitle=""
    sdpProzess(1).id = 4656: sdpProzess(1).MainWIndowsTitle="Microsoft Excel - abc.xls [Kompatibilitätsmodus]"
    sdpProzess(2).id = 6572: sdpProzess(2).MainWIndowsTitle="Microsoft Excel - Mappe1"
    etc.
    [/highlight]
    kann ich mir die bequem aufzeigen lassen. Auf der anderen Seite kann es gut vorkommen dass in "einer" solchen Prozessinstanz mehere Exceldateien aufgestarten sind.

    Ich weiss, dass zum Beispiel in sdpProzess(1).id = 4656, aber auch noch abc2.xls und abc3.xls vorhanden sind, die ich mit GetObject() und einer For-Schleife vorher ermittelt habe.

    Jetzt zu meiner Frage. Wie finde ich programmiertechnisch die richtige Instanz zu abc3.xls, und setze den Fokus auf diese Datei, damit ich auch mit dieser Datei arbeiten kann.

    Für die Antworten Danke ich im vorraus

    Gruss Exc-JDBI

  • #2
    Pozess und Instanzen einfangen

    Scheint wohl doch nicht so einfach zu sein ... ich habe auch noch einmal ein bisschen probiert, aber es ist mir einfach nicht gelungen eine genaue Verbindung die beide Seiten (also process und GetObject) ist zu finden.

    Vielleich muss das ja auch seinen Grund haben

    Comment


    • #3
      .NET wird dir da direkt nicht helfen (Ist nicht der Focus von .NET an anderen Applikationen rum zu spielen).
      Wenn du über die Windows API gehst ist das aber relativ leicht möglich.
      Mit EnumWindow das Fenster zu deinem speziellen ExcelSheet suchen.Wenn du den Prozess zu diesem Fenster brauchst kannst du dann mit GetWindowThreadProcessId die ProcessID ermitteln. Über Process.GetProcessById holst du dir dann wieder ein übliches Process Objekt aus der .Net Welt.

      Comment


      • #4
        Prozess und Instanzen einfangen

        Guten Tag Ralf

        Danke für die Antwort.


        Den Weg über die API, wollte ich eben vermeiden.

        Obwohl bei genauerer Betrachtung muss ich sagen, ziemlich interessant. Das muss ich mir doch noch ein bisschen genauer anschauen.

        Nochmals danke für den Tip

        Gruss Exc-JDBI

        Comment

        Working...
        X