Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

WM SETTEXT - Nur 3 Zeichen dann Zufallswert

Frage Entwicklung VB for Applications

Mitglied: vbMaxi

vbMaxi (Level 1) - Jetzt verbinden

16.02.2008, aktualisiert 17.02.2008, 4292 Aufrufe, 6 Kommentare

Hallo @all,
ich habe ein bisschen mit der Funktion "WM_SETTEXT" experimentiert. Das Problem ist nur, dass ich der Funktion nur 3 Zeichen übergeben kann. Wenn ich mehr übergebe dann wird dem Text noch ein zufälliges Zeichen angehängt. Wie krieg ich das hin ohne das Zufällige Zeichen??

Hier der Code:
01.
Option Explicit 
02.
 
03.
' zunächst die benötigten API-Deklarationen 
04.
Private Type POINTAPI 
05.
  x As Long 
06.
  y As Long 
07.
End Type 
08.
 
09.
Private Declare Function GetCursorPos Lib "user32" _ 
10.
  (lpPoint As POINTAPI) As Long 
11.
 
12.
Private Declare Function WindowFromPoint Lib "user32" _ 
13.
  (ByVal xPoint As Long, ByVal yPoint As Long) As Long 
14.
 
15.
Private Declare Function SendMessage Lib "user32" Alias _ 
16.
  "SendMessageA" (ByVal hWnd As Long, _ 
17.
  ByVal wMsg As Long, ByVal wParam As Long, _ 
18.
  lParam As Any) As Long 
19.
 
20.
Private Const WM_GETTEXT = &HD 
21.
Private Const WM_SETTEXT = &HC 
22.
 
23.
Private Sub Form_Load() 
24.
  ' Timer initialisieren 
25.
  tmrTimer.Interval = 10 
26.
  tmrTimer.Enabled = False 
27.
End Sub 
28.
Private Sub cmdStart_Click() 
29.
  tmrTimer.Enabled = Not tmrTimer.Enabled 
30.
  cmdStart.Caption = IIf(tmrTimer.Enabled, "Stop", "Start") 
31.
End Sub 
32.
 
33.
Private Sub Label1_Click() 
34.
 
35.
End Sub 
36.
 
37.
Private Sub tmrTimer_Timer() 
38.
  Dim oPoint As POINTAPI 
39.
  Dim hWnd As Long 
40.
  Dim lLength As Long 
41.
  Dim sWindowText As String 
42.
   
43.
  ' Mausposition ermitteln 
44.
  If GetCursorPos(oPoint) <> 0 Then 
45.
    ' Fensterhandle des Controls, auf dem sich 
46.
    ' der Mauszeiger befindet 
47.
    hWnd = WindowFromPoint(oPoint.x, oPoint.y) 
48.
    sWindowText = Text2.Text 
49.
    ' Fenstertext des Controls ermitteln 
50.
    lLength = SendMessage(hWnd, WM_SETTEXT, _ 
51.
      2, CLng("&H2e4d20")) '2e562e 
52.
       
53.
    ' Handle anzeigen 
54.
    lblHandle.Caption = hWnd & ", " & Len(Text2.Text) & ", " & sWindowText 
55.
     
56.
    ' Mausposition anzeigen 
57.
    lblPos.Caption = "x " & oPoint.x & " y " & oPoint.y 
58.
     
59.
    ' Fenstertext anzeigen 
60.
    'lblWindowText.Caption = Left(sWindowText, lLength) 
61.
  End If 
62.
End Sub

Danke im vorraus und ein schönen Wochenende

lg vbmaxi
Mitglied: misterdemeanor
16.02.2008 um 14:16 Uhr
Hallo vbMaxi,


ich habe ein bisschen mit der Funktion
"WM_SETTEXT" experimentiert.
Entweder hast Du Dich falsch ausgedrückt, oder etwas falsch verstanden. WM_SETTEXT ist (wie auch in Deinem Code deklariert) eine Konstante. Sprich nur ein Alias für einen Zahlenwert.

Hier der Code:

Private Const WM_GETTEXT = &HD

Private Sub tmrTimer_Timer()
...
sWindowText = Text2.Text
' Fenstertext des Controls
ermitteln
lLength = SendMessage(hWnd, WM_SETTEXT,
_
2, CLng("&H2e4d20"))
'2e562e
?? Wenn Du etwas ermitteln willst, hier also den Text eines Controls über dem sich die Maus befindet, ist die Message SET_TEXT logisch gesehen doch falsch...richtig? Außerdem wird der dritte Parameter von SendMessage bei senden der SET_TEXT-Message nicht benutzt. Vor allem aber ist der 4te Parameter ein Pointer zu einem String der den zu setzenden Text beinhalten soll. Guckst Du hier

' Handle anzeigen
lblHandle.Caption = hWnd & ",
" & Len(Text2.Text) & ",
" & sWindowText
Hier machst Du nichts weiter als das Handle des Windows anzuzeigen über welchem sich der Mauscursor befindet. Dann natürlich noch die Länge des Textes der in Text2 und den Text aus Text2 selbst.

' Mausposition anzeigen
lblPos.Caption = "x " &
oPoint.x & " y " &
oPoint.y
OK, fein.

' Fenstertext anzeigen
'lblWindowText.Caption =
Left(sWindowText, lLength)
Wieder wie oben. Nur das was in Text2 steht und dessen Textlänge.

Beschreibe doch mal kurz was Du eigtl. vorhast. Oder schaue Dir einfach mal das hier an.

BG, Felix -misterdemeanor-
Bitte warten ..
Mitglied: vbMaxi
16.02.2008 um 20:32 Uhr
hi,
danke für deine Antwort. Eigentlich kommt der Code von einem Freund. War mir zu umständlich des da jetzt alles rein zu schreiben Hab mir den Code nicht so genau angeschat. Ich sollte einfach nur die Frage stellen. Er meinte dass man damidt z.B. Fenstertitel setzten kann. Was ja auch funktioniert. Allerdings nur bis 3 Zeichen. Laut deiner Angaben ist WM_SETTEXT gar nicht dazu bestimmt Eine Fremde Textbox etc. zu setzt, sondern nur auszulesen, habe ich das richtig verstanden??

lg maxi
Bitte warten ..
Mitglied: vbMaxi
16.02.2008 um 21:44 Uhr
hi,
Problem gelöst:
01.
Option Explicit 
02.
 
03.
' zunächst die benötigten API-Deklarationen 
04.
Private Type POINTAPI 
05.
  x As Long 
06.
  y As Long 
07.
End Type 
08.
 
09.
Private Declare Function GetCursorPos Lib "user32" _ 
10.
  (lpPoint As POINTAPI) As Long 
11.
 
12.
Private Declare Function WindowFromPoint Lib "user32" _ 
13.
  (ByVal xPoint As Long, ByVal yPoint As Long) As Long 
14.
 
15.
Private Declare Function SendMessage Lib "user32" Alias _ 
16.
  "SendMessageA" (ByVal hWnd As Long, _ 
17.
  ByVal wMsg As Long, ByVal wParam As Long, _ 
18.
  ByVal lParam As String) As Long 
19.
 
20.
Private Const WM_GETTEXT = &HD 
21.
Private Const WM_SETTEXT = &HC 
22.
 
23.
Private Sub Form_Load() 
24.
  ' Timer initialisieren 
25.
  tmrTimer.Interval = 10 
26.
  tmrTimer.Enabled = False 
27.
   
28.
  tmrTimer.Enabled = Not tmrTimer.Enabled 
29.
End Sub 
30.
Private Sub Label1_Click() 
31.
 
32.
End Sub 
33.
 
34.
Private Sub tmrTimer_Timer() 
35.
  Dim oPoint As POINTAPI 
36.
  Dim hWnd As Long 
37.
  Dim lLength As Long 
38.
  Dim sWindowText As String 
39.
   
40.
  ' Mausposition ermitteln 
41.
  If GetCursorPos(oPoint) <> 0 Then 
42.
    ' Fensterhandle des Controls, auf dem sich 
43.
    ' der Mauszeiger befindet 
44.
    hWnd = WindowFromPoint(oPoint.x, oPoint.y) 
45.
    sWindowText = Text2.Text 
46.
    ' Fenstertext des Controls ermitteln 
47.
    lLength = SendMessage(196676, WM_SETTEXT, _ 
48.
      Len(Text2.Text), Text2.Text)   '2e562e 
49.
       
50.
    ' Handle anzeigen 
51.
    lblHandle.Caption = hWnd & ", " & Len(Text2.Text) & ", " & sWindowText 
52.
     
53.
    ' Mausposition anzeigen 
54.
    lblPos.Caption = "x " & oPoint.x & " y " & oPoint.y 
55.
     
56.
    ' Fenstertext anzeigen 
57.
    'lblWindowText.Caption = Left(sWindowText, lLength) 
58.
    End 
59.
  End If 
60.
End Sub
lg vbmaxi
Bitte warten ..
Mitglied: misterdemeanor
17.02.2008 um 16:17 Uhr
hi,
danke für deine Antwort. Eigentlich
kommt der Code von einem Freund. War mir zu
umständlich des da jetzt alles rein zu
schreiben Hab mir den Code nicht so genau
angeschat. Ich sollte einfach nur die Frage
stellen.
Aha.
Er meinte dass man damidt z.B.
Fenstertitel setzten kann. Was ja auch
funktioniert.
Wenn richtig angewendet schon.
Laut deiner Angaben ist WM_SETTEXT gar nicht
dazu bestimmt Eine Fremde Textbox etc. zu
setzt, sondern nur auszulesen, habe ich das
richtig verstanden??
Nein, falsch verstanden. Man (ich) konnte nur nicht erraten was Dein Freund machen wollte.
Bitte warten ..
Mitglied: misterdemeanor
17.02.2008 um 16:23 Uhr
lLength = SendMessage(196676,
WM_SETTEXT, _
Len(Text2.Text), Text2.Text)
'2e562e

Warum codierst Du einen konstanten Wert? Sobald das Contrl mit dem Handle nicht mehr existiert nutzt Dir der Code nichts mehr. Noch seltsamer da Du ja vorher das Handle unter dem sich die Maus befindest vorher ermittelst. Seltsam.
Bitte warten ..
Mitglied: vbMaxi
17.02.2008 um 18:52 Uhr
hi misterdemeanor,
ok aber jetzt hat es ja geklappt. Nochmal danke für deine Hilfe.


lg vbmaxi
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst VBA Text mit Format übertragen und Zeichen ergänzen (11)

Frage von Dau12345 zum Thema VB for Applications ...

Batch & Shell
gelöst Dos-Box, seltsame(s) Zeichen - Was und woher? (6)

Frage von Franz-Josef-II zum Thema Batch & Shell ...

Speicherkarten
gelöst USB Stick: Dateien mit komischen Zeichen im Namen, unlesbar (8)

Frage von pablovic zum Thema Speicherkarten ...

Batch & Shell
gelöst Powershell - Pfadlänge mit mehr als 260 Zeichen (10)

Frage von Bugger zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...