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
-
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.CreateProcessAllerdings 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
-
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.
-
@Unix-Tom,
Damit gibt es aber meistens einige Probleme. Zum Beispiel gibt es keine Garantie, ab wann dasMainWindowHandle
gültig ist. Und auch hier gilt, dass es sehr schwer zu sagen ist, was genau das Main-Window ist.
Und da man fürRECT
,GetWindowRect
undSetWindowPos
sowieso auch noch P/Invoke braucht, ist es fraglich, ob man dies nicht besser gleich über eine P/Invoke Implementation vonCreateProcess
machen sollteGrü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?