VB 5/6-Tipp 0111: Position fremder Fenster bestimmen und ändern
von ActiveVB
Beschreibung
Dieses Beispiel zeigt wie Anhand eines Fenstertitels das Handle einer anderen Anwendung gefunden wird um damit die Fensterposition dersdelben auszulesen und frei über den Bildschirm zu verschieben. Dafür wird hier das aufrufende Form unteranderem 'OnTop' gesetzt.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: FindWindowA (FindWindow), GetWindowRect, SetWindowPos, ShowWindow | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command2" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Bildfeld-Steuerelement "Picture1" Option Explicit 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 Private Declare Function ShowWindow Lib "user32" (ByVal _ hwnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function GetWindowRect Lib "user32" (ByVal _ hwnd As Long, lpRect As RECT) As Long Private Declare Function FindWindow Lib "user32" Alias _ "FindWindowA" (ByVal lpClassName As String, ByVal _ lpWindowName As String) As Long Const SWP_NOMOVE = &H2 Const SWP_NOSIZE = &H1 Const HWND_TOPMOST = -1 Const SW_MAXIMIZE = 3 Const SW_MINIMIZE = 6 Const SW_RESTORE = 9 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Dim XhWnd& Private Sub Form_Load() Dim Result& Picture1.ScaleMode = vbPixels Picture1.Print "Hier die Maus drüber bewegen !" 'NotePad starten Result = Shell("notepad.exe", vbNormalFocus) 'Handle des Notepads auslesen XhWnd = FindWindow(vbNullString, "Unbenannt - Editor") 'Eigenes Fenster nach oben setzen Result = SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, _ SWP_NOMOVE + SWP_NOSIZE) End Sub Private Sub Command1_Click() Call ShowWindow(XhWnd, SW_MINIMIZE) End Sub Private Sub Command2_Click() Call ShowWindow(XhWnd, SW_RESTORE) End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As _ Integer, x As Single, y As Single) Dim R As RECT, pX&, pY& 'Neue Position berechnen pX = x * Screen.Width / Picture1.Width pY = y * Screen.Height / Picture1.Height 'Neue Position Setzen Call SetWindowPos(XhWnd, 0, pX * 0.5, pY * 0.5, pX * 0.5 + _ pX * 0.25, pY * 0.5 + pY * 0.25, 0&) 'Neue Position Auslesen und anzeigen Call GetWindowRect(XhWnd, R) Me.Caption = "[" & R.Left & "] [" & R.Top & "]" End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Sachse am 15.11.2008 um 21:23
..also manche Tipps machen mich aber auch fertig! Es geht hier in dem Tipp doch darum, die Position eines Fensters festzulegen. Das steht im Mittelpunkt dieses Tipps und das erwartet man auch, wenn man von der Suche auf diesen Tipp stösst. Statt dessen müssen der User mühsam (!) versuchen, die Maus-Spielerei aus dem Code zu bekommen. Macht doch sowas bitte in Extra Tipps: "Mit der Maus die Fenstergröße und Position bestimmen". Das fällt leider in mehreren Tipps auf.
Sachse
Kommentar von Joie am 25.10.2005 um 00:57
Ha das jemand mit VB.NET zum laufen gebracht?
Kommentar von Matthias Göbel am 08.06.2002 um 22:36
Hat jemand eine Idee wie man eine DOS-Box
(Command.com oder cmd.exe) über VB in den Vollbild-Modus schalten kann (geht manuell mit "-") ?