Ik ben bezig de functionaliteit van PureText (http://stevemiller.net/puretext/) na te maken. Dit is aardig gelukt, alleen een functie lukt niet helemaal. Deze functie is namelijk het direct plakken van text in een active window, eigenlijk hetzelfde wat ctrl-c doet.
Wat doet het programma:
Je kopieert een stukje text van bv een webpagina
Je doet ctrl-d (of een andere toetsencombinatie waar op het programma reageert) en de text wordt in plain text in het active window gepasted. (Omdat WinXP nogal de neiging heeft om het als RTF te plakken enzo).
Ik heb deze code (irrelevante zaken even weggelaten)
Dit werk ook, maar alleen in Notepad. In MDI programma's raakt hij de kluts kwijt lijkt het wel.
Het probleem lijkt te zitten in:
De 0& zou, als ik het goed begrepen heb de handle van de cild window moeten zijn. Ik kan echter niets relevants op het internet vinden.
Iemand een suggestie
Wat doet het programma:
Je kopieert een stukje text van bv een webpagina
Je doet ctrl-d (of een andere toetsencombinatie waar op het programma reageert) en de text wordt in plain text in het active window gepasted. (Omdat WinXP nogal de neiging heeft om het als RTF te plakken enzo).
Ik heb deze code (irrelevante zaken even weggelaten)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function SendMessageSTRING Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long Dim sTemp As String Dim lCurHwnd As Long Dim lEdit As Long sTemp = Clipboard.GetText(vbCFText) lCurHwnd = GetForegroundWindow lEdit = FindWindowEx(lCurHwnd, 0&, "Edit", vbNullString) SendMessageSTRING lEdit, WM_SETTEXT, 256, stemp |
Dit werk ook, maar alleen in Notepad. In MDI programma's raakt hij de kluts kwijt lijkt het wel.
Het probleem lijkt te zitten in:
Visual Basic:
1
| lEdit = FindWindowEx(lCurHwnd, 0&, "Edit", vbNullString) |
De 0& zou, als ik het goed begrepen heb de handle van de cild window moeten zijn. Ik kan echter niets relevants op het internet vinden.
Iemand een suggestie