Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: vbMaxi

vbMaxi (Level 1) - Jetzt verbinden

16.02.2008, aktualisiert 17.02.2008, 4394 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 ..
Ähnliche Inhalte
Microsoft Office
Protokoll von Zufallswerten in Excel
gelöst Frage von KatrinSteMicrosoft Office2 Kommentare

Hallo zusammen, ich habe das Spiel Stein, Schere, Papier in MS Excel 2010 mit den Zufallsgrößen programmiert. Nach jedem ...

Java
Android TextView setText via Getter
gelöst Frage von TobiasedJava1 Kommentar

Guten Tag Community, ich versuche mich gerade an meiner ersten Anroid App und bin auf ein Problem gestoßen, bei ...

Python
Python von ZEICHEN bis ZEICHEN
gelöst Frage von schneerunzelPython2 Kommentare

Hallo, ich glaube ich habe eine ganz einfache Frage: Ich möchte aus eine Testdatei die So aufgebaut ist: ID;Vorname;Name;Jahrgang ...

Entwicklung

Delphi-Script: Abgriff von Zeichen bis Zeichen

gelöst Frage von archivarioEntwicklung3 Kommentare

Hallo zúsammen, vielleicht kann mir jemand helfen. Ich muss in einem Delphi Programm per Script ein bestimmtes Zeichen rausfiltern ...

Neue Wissensbeiträge
Multimedia & Zubehör
AVM Fritz USB WLAN Sticks schneller einschalten
Tipp von NetzwerkDude vor 1 TagMultimedia & Zubehör4 Kommentare

Die AVM Fritz WLAN Sticks haben in der Firmware 2 Modis: Einmal als Massenspeicher und einmal als WLAN Netzwerkkarte ...

Windows Server

Windows Server Backup schlägt fehl - Lösung 2008-2016

Tipp von BiGnoob vor 1 TagWindows Server

Hi zusammen , ich möchte gerne einen Lösungstipp abgeben für folgenden Fehler: lösung ist folgende:

Humor (lol)
Telekom vs. O2 - 3:2
Erfahrungsbericht von the-buccaneer vor 2 TagenHumor (lol)4 Kommentare

Unglaublich aber wahr: Nachdem mein privater Anschluss am 19.04.18 auf VOIP und VDSL umgestellt wurde, hatte ich seitdem 1,5 ...

Batch & Shell

Windows 10 Heimnetzgruppe abgeschaft. Ein Script für einfache Netzwerk - Freigabe im Heimnetzwerk

Anleitung von treehe vor 2 TagenBatch & Shell3 Kommentare

Anleitung für eine einfache Netzwerkfreigabe unter Windows 10 Wie weiter hab mal ein kleines CMD - Script gebastelt. Womit ...

Heiß diskutierte Inhalte
Windows Server
Windows Server 2012 - Update - Beim Booten bleibt der Server beim Windows Zeichen stehen
Frage von KeilbachWindows Server17 Kommentare

Hallo Zusammen, ich grüße euch, mein Name ist Michele. Ich bin hier ganz Neu - da ich einfach nicht ...

PHP
Nach umzug zu 1und1 bekomme ich beim eintrag in die db tab folgendsen fehler
Frage von jensgebkenPHP14 Kommentare

INSERT command denied to user 'dbo42342342342234244'@'212.227.109.173' for table 'orders'

Windows Server
2003er RDS Server lässt alten ThinClient nach Updates nicht mehr anmelden
Frage von KnorkatorWindows Server9 Kommentare

Hallo zusammen, wir hatten die Aufgabe, ein System (keine Domänenanbindung) zu virtualisieren welches mehrere Jahre keine Updates gesehen hat. ...

VB for Applications
Per Button klick Wert in Zelle eintragen, erneutes klicken Wert wieder entfernen
gelöst Frage von HainoonVB for Applications8 Kommentare

Hallo zusammen, Ich Frage mich, ob es möglich ist mit dem selben Button einen Wert in eine Zelle einzutragen ...