| | | MDG Engineering Nutzt Xometry, Um Medizinische Geräte Zu Bauen Und Das Globale Wachstum Voranzutreiben, ein Anwenderbericht
|
Autor
|
Thema: Fenster maximieren (9554 mal gelesen)
|
Black Hawk Mitglied Student
Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 17. Jun. 2005 10:35 <-- editieren / zitieren --> Unities abgeben:
Hi zusammen, ich habe ein kleines aber feines Problem... :-) Ich möchte eine Funktion in mein bestehendes Programm einbauen, die eine Anwendung, die ich starte direkt maximiert, falls sie es nicht schon ist. Wie kann ich das in C# realisieren? Ich habe schon viel im Netz gelesen, jedoch noch nicht den entscheidenen Hinweis gefunden, nur das es über die user32.dll funktionieren sollte. Über Hilfe wäre ich sehr dankbar! Gruß, Frederik
[Diese Nachricht wurde von Black Hawk am 17. Jun. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler
Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 17. Jun. 2005 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für Black Hawk
Hallo Frederik, versuche es mal mit folgendem: Code:
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("notepad.exe"); psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi);
gruß flo ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Black Hawk Mitglied Student
Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 17. Jun. 2005 12:07 <-- editieren / zitieren --> Unities abgeben:
Hi Flo! Danke Dir! Auf diese Art läuft das ganz bestimmt... ABER: Ich arbeite mit SolidWorks und starte dieses über die APi-Schnittstelle, hab also eine Variable vom Typ SldWorks.SldWorksClass. Mit Deiner Idee starte ich leider einen komplett neuen Prozess, wobei ich es mit dem bereits laufenden Prozess realisieren will. Das API-Team hat uns den Hinweis über den Dll-Import gegeben:
Code:
Private Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As Long) As Long ' Get main window frame. Set swFrame = swApp.Frame ' Get window handle. hWnd = swFrame.GetHWnd ' Change. x = 10 y = 10 cx = 300 cy = 600 ' Fake a user change in the window position. lRetVal = SetWindowPos(hWnd, HWND_NOTOPMOST, x, y, cx, cy, SWP_SHOWWINDOW)
c# funktion : public class START_SolidWorks { [DllImport( "user32.dll")] public static extern int SetWindowPos( int hWnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags); ... swApp= new SldWorks.SldWorksClass(); OpenSelectedDoc( swApp, SwConst.swDocumentTypes_e.swDocASSEMBLY); swApp.Visible = true; ... SldWorks.Frame Frame = (SldWorks.Frame) swApp.Frame(); int hWndMain = Frame.GetHWnd(); SetWindowPos(hWndMain, -2, 0, 0, 300, 600, SWP_SHOWWINDOW ); }
Die Variable "SWP_SHOWWINDOW" ist hier weder bekannt, noch hat sie einen Wert. Setze ich für diese Variable gerade Zahlen ein, so verkleinere ich das Fenster auf die in den vorherigen Positionen eingesetzten Werte (300, 600). Bei ungeraden Zahlen wird es in der Form geöffnet, wie es beim letzten Schließen eingestellt war. Gruß, Frederik
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
_InvasoR_ Mitglied student
Beiträge: 55 Registriert: 17.03.2005
|
erstellt am: 17. Jun. 2005 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Black Hawk
|
Black Hawk Mitglied Student
Beiträge: 14 Registriert: 04.05.2005
|
erstellt am: 17. Jun. 2005 14:22 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|