Process.Start Location Koordinaten festlegen?



  • Hi,

    im Namespace System.Diagnostics gibt es ja eine Methode namens Process, mit der man eine auf dem System installierte Anwendung starten kann. Ist es auch möglich die Desktop Koordinaten festzulegen? Habe bisher nur die StartInfo.WindowStyle Enumeration gefunden, die aber nur den Fensterzustand festlegt. Wenn es aber schon eine solche Eigenschaft gibt, ist doch mit Sicherheit auch eine Location Variable vorhanden, oder?

    Thx


  • Administrator

    Ich kenne leider keinen Weg dies sinnvoll über C# zu bewerkstelligen, ausser über P/Invoke CreateProcess zu verwenden.

    Hier kannst du die Import-Signatur für C# holen:
    http://www.pinvoke.net/default.aspx/kernel32.CreateProcess

    Allerdings frage ich mich ein wenig, wofür du das brauchst? Der Programmierer vom anderen Programm kann dies ganz einfach verhindern, indem er selber beim Erstellen des ersten Fensters eine Position angibt. Auch könntest du vielleicht ein anderes erstes Fenster beeinflussen, welches du nicht siehst oder nicht wolltest. Grundsätzlich halte ich das für eine eher schlechte Idee.

    Grüssli



  • Ach, ich hab ne Datenbank mit diversen Kontakten und Internet Adressen. Ich möchte einfach nur, das der Internet Explorer, bei Bedarf neben meiner Anwendung geöffnet wird.
    Über P/Invoke hab ich auch schon nachgedacht. Dachte nur Process wäre einfacher.

    Wäre es sinnvoller mit dem WebBrowser Steuerelement zu arbeiten?

    Danke für deine Hilfe 👍


  • Administrator

    Dappeljuh schrieb:

    Wäre es sinnvoller mit dem WebBrowser Steuerelement zu arbeiten?

    Sehr schwer zu sagen ohne weitere Informationen zur Anwendung oder dem Zugang zur Datenbank, bzw. auch den Daten in der Datenbank.

    Grüssli



  • Mit Prozess geht das auch.

    Vielleicht nicht bei der Übergabe aber Du hast dann ein Handle auf den Prozess und kannst das Fenster beeinflussen.

    nPad ist von Prozess().

    IntPtr mainw = nPad.MainWindowHandle;
                RECT activeAreaTestApp = new RECT();
                GetWindowRect(mainw, out activeAreaTestApp);
    
                SetWindowPos();
    

    SO kannst Du alles mit dem Fenster machen.
    Das schwierigste waren bei mir Visual Fox Pro Programme aber sogar da funktioniert es.


  • Administrator

    @Unix-Tom,
    Damit gibt es aber meistens einige Probleme. Zum Beispiel gibt es keine Garantie, ab wann das MainWindowHandle gültig ist. Und auch hier gilt, dass es sehr schwer zu sagen ist, was genau das Main-Window ist.
    Und da man für RECT , GetWindowRect und SetWindowPos sowieso auch noch P/Invoke braucht, ist es fraglich, ob man dies nicht besser gleich über eine P/Invoke Implementation von CreateProcess machen sollte 😉

    Grüssli



  • ' Start Internet Explorer. Defaults to the home page.
    Process.Start("IExplore.exe")



  • Sry für doppelpost aber:

    ' url's are not considered documents. They can only be opened
    ' by passing them as arguments.
    Process.Start("IExplore.exe", "www.northwindtraders.com")

    ' Start a Web page using a browser associated with .html and .asp files.
    Process.Start("IExplore.exe", "C:\myPath\myFile.htm")
    Process.Start("IExplore.exe", "C:\myPath\myFile.asp")

    Quelle: MSDN



  • @asdf: Ja und? Was willst du damit sagen?


Anmelden zum Antworten