ich brauche die Befehle in vb um ein fenster umzubenennen.
ich weiß das ich die Funktionen:
Private Declare Function FindWindow Lib „user32“ Alias „FindWindowA“ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowText Lib „user32“ Alias „SetWindowTextA“ (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function GetWindowText Lib „user32“ Alias „GetWindowTextA“ (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
brauche.
ich verstehe das auch soweit, nur „ByVal lpClassName As String“ gibt mit Rätsel auf. ich weiß net was ich da einstellen muss.
ty aber es funktioniert trotzdem nicht
der quellcode:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim parameter() As String = Environment.GetCommandLineArgs().ToArray
Dim str As String = „“
Dim winwnd
If (parameter.Count - 1) >= 1 Then 'Höher als 1 weil der index 0 der Pfad zum programm ist
For i = 1 To parameter.Count - 1
ListBox1.Items.Add(parameter(i))
str = str + parameter(i)
Next
End If
Shell("_elementclient.exe -" + str)
winwnd = FindWindow(vbNullString, „Element Client“)
SetWindowText(winwnd, „PW“)
End Sub
Private Declare Function FindWindow Lib „user32“ Alias „FindWindowA“ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowText Lib „user32“ Alias „SetWindowTextA“ (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function GetWindowText Lib „user32“ Alias „GetWindowTextA“ (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
End Class
das programm fängt die parameter mit denen es gestartet wird ab und start damit die „_elementclient.exe“ welche die Spieldatei von perfect world einem mmorpg ist.
das umbennen des fensters soll dem zweck dienen, das ich das spiel mehrmals starten kann.
Bitte ließ doch erst bevor du unqualifizierte Bemerkungen machst.
Die Funktionen werden im Quellcode ganz unten definiert und zwar mit hilfe der user32.dll.
Damit hättest du deinen DLL-Import.
Unqualifizierte Bemerkungen?
Normalerweise und so wie ich es kenne, lautet die Definition
Private Shared Function Deine Funktion
End Function
Desweiteren verwendet man keinen Datentyp Long, sondern eher Int (32,64…) Die Declaration ist noch von VB6 Zeiten und diese musst du entsprechend .Net anpassen.
Auch sollte man wenn man schon ein Problem hat und es dann immer noch nicht läuft, auch die entsprechenden antworten liefern, denn bei den meisten ist die Kristallkugel defekt und koennen nicht hell sehen.
Aber wenn du der Meinung bist, mit solch ein Auftreten hier weiter Hilfe zu bekommen, dann bitte. Ich für meinen Teil werde mich zurueckziehen. In diesem Sinne …
Entschuldige für diese Bemerkung, aber ich kenne es nur so, da auch die Hilfe und die Onlinehilfe es so erklären. Das mit „long“ stimmt wohl is auch ursprunglich aus einem VB6-Codeteil von hier. Und ich wollte nicht unhöflich sein aber deine Nachfragen sind immer sehr kurz, sodass man das Gefühl erhält du würdest nicht richtig lesen und dann immer nur nach gucken was grad gefragt ist.
Anbei ein Demo, was ihren Dienst macht. Musst dir dann nur noch anpassen.
Kopiere einfach folgenden Source in eine bestehende Form.
Imports System.Runtime.InteropServices
Public Class Form1
Private Shared Function FindWindowA(ByVal lpClassName As String, ByVal lpWindowName As String) As Int32
End Function
Private Shared Function SetWindowTextA(ByVal Hwnd As Int32, ByVal Text As String) As Int32
End Function
Private Sub ProzessStart(ByVal sender As System.Object, ByVal e As System.EventArgs)
Process.Start("Calc.exe")
End Sub
Private Sub ChangeText(ByVal sender As System.Object, ByVal e As System.EventArgs)
SetWindowTextA(FindWindowA(vbNullString, "Rechner"), "Test")
End Sub
Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim But(1) As Button
But(0) = New Button With {.Text = "Prozess Rechner starten", .Dock = DockStyle.Top}
But(1) = New Button With {.Text = "Caption ändern", .Dock = DockStyle.Top}
Me.Controls.AddRange(But)
AddHandler But(0).Click, AddressOf ProzessStart
AddHandler But(1).Click, AddressOf ChangeText
End Sub
End Class
Vielen Dank
jetzt läuft es. Es funktionierte schon so halb al ich es auf Integer gändert hatte, aber mit den DLLImport aufrufen und Int32 funktioniert jetzt auch das Umbenennen des Fensters.
VIELEN DANK NOCHMAL