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, 4407 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
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 ...

Batch & Shell
Zeichen aus einem String entfernen
gelöst Frage von JimStarBatch & Shell3 Kommentare

Guten Tag zusammen, ich möchte folgendes tun: In einer Textdatei, steht eine Zeile. Diese beinhaltet z.B.: Diese Textzeile muss ...

Groupware
Kolab: Erlaubte Zeichen in der UserID?
Frage von -WeBu-Groupware

Guten Tag, welche Zeichen sind denn in der UserID von Kolab erlaubt? Bei OX kann es ja auch ein ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 18 StundenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 1 TagVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Drucker und Scanner
HP-MF-Drucker per Fax angreifbsr
Information von Lochkartenstanzer vor 3 TagenDrucker und Scanner4 Kommentare

Endlich eine sinnvolle Verwendung für Faxe: Damit kann man offensichtlich den Drucker übernehmen. lks

Router & Routing

Das pfSense Buch ist jetzt für jeden kostenlos zu beziehen

Tipp von magicteddy vor 3 TagenRouter & Routing2 Kommentare

Bisher war das Buch nur für zahlende Unterstützer verfügbar, jetzt steht für Jedermann kostenlos zur Verfügung. Siehe auch The ...

Heiß diskutierte Inhalte
Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server32 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Datenbanken
MySQL Datenbank Import Aufgabe für mehrere .csv dateien
gelöst Frage von Marcel1989Datenbanken19 Kommentare

Hi, ich komm nicht weiter. Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen. Nun soll diese ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS15 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...