Problem mit GetWindowText

27/05/2009 - 10:59 von Ahmed Martens | Report spam
Hallo Leute,

ich habe das Problem, dass mit kein Titel mit API-Funktion GetWindowText
ausgelesen wird. Die hwnd bekomme ich aber.

Ich habe auch die API-Rückgabewerte von Long (VB) auf Int (VBNet)
umgestellt.

Ich bekomme das einfach nicht hin.

Ich möchte mit dem kleinen Tool, die hwnd des aktiven Fremdfensters
auslesen und mit der SetForeGroundWindow-Funktion an der Oberflàche
halten. In VB funktioniert das auch einwandfrei.

Nur möchte ich halt endlich einmal umsteigen und auch das
Notify-Steuerelement nutzen.

Kann mir vielleicht jemand helfen, wo hier der Fehler liegt?

Wàre super von Euch.
Danke schon einmal im voraus.

Hier der Code:

Public Class frmTool

Private Declare Function GetWindowText Lib "user32" Alias
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal
cch As Long) As Integer
Private Declare Function GetForegroundWindow Lib "user32" () As
Integer
'Api-Funktion, damit der Rechner immer an oberster Stelle angezeigt
wird
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 Integer
Dim hWn As Integer

Const SWP_NOMOVE As Long = &H2
Const SWP_NOSIZE As Long = &H1
Const SWP_NOZORDER As Long = &H4
Const SWP_SHOWWINDOW As Long = &H40
Const HWND_NOTOPMOST As Long = -2
Const HWND_TOPMOST As Long = -1


Private Sub frmTool_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
End Sub

Private Sub frmTool_Resize(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Resize
If Me.WindowState = FormWindowState.Minimized Then
NotifyIcon1.Visible = True
Me.Visible = False
End If
End Sub

Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As
System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles
NotifyIcon1.MouseDoubleClick
NotifyIcon1.Visible = False
Me.Visible = True
Me.WindowState = FormWindowState.Normal

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Dim Titel As String
Dim pos As Integer

Titel = Space(255)
hWn = GetForegroundWindow
GetWindowText(hWn, Titel, 255)
pos = InStr(Titel, Chr(0))
If pos > 0 Then
Titel = Titel.Substring(1, (pos - 1))
End If

Label1.Text = Trim(Titel)

End Sub

Private Sub btnFix_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnFix.Click
Dim sTag As String
sTag = CStr(btnFix.Tag)

If sTag = "" Then
SetWindowPos(hWn, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE +
SWP_NOMOVE + SWP_SHOWWINDOW)
btnFix.Tag = 1
Else
btnFix.Tag = ""
SetWindowPos(hWn, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE +
SWP_NOMOVE + SWP_SHOWWINDOW)
End If

End Sub
End Class

Gruß Ahmed
Antworten bitte nur in der Newsgroup.
 

Lesen sie die antworten

#1 Armin Zingler
27/05/2009 - 11:19 | Warnen spam
Ahmed Martens wrote:
Private Declare Function GetWindowText Lib "user32" Alias
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal
cch As Long) As Integer



Das sind Deklarationen für VB6. Du verwendest kein VB6.


Armin

Ähnliche fragen