PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : text als link erkennen


4c1dI3uI2n
08.05.2002, 11:58
hi leutz,
häng gerad davor mir meine eigenen favoriten für internet explorer zu scribten, naja plane es gerad im kopf, hab nähmlich gerad ibfo in der schule.

frage:
wie bekomm ich es hin, dass der eingegebene text im textfeld als link anerkannt wird und wenn ich dann auf den link klick, diesen dann im neuen fenster des internet explorer öffnet?

ich hoffe mir kann da jemand weiterhelfen, ich würde mich gern daran setzen wenn ich heut aus der schule komm.

thx scho mal i, vorraus.

mfg


Mimo
08.05.2002, 12:28
Das geht folgendermassen:

1. Du fragst im Click (oder DblClick) Ereignis des Textfeldes ab die Eigenschaft "SelStart" des Textfeldes ab. Das ist die Cursorposition.

2. Dann schneidest Du Dir das Wort heraus, wo sich der Cursor befindet. Einfach das linke Leerzeichen suchen von der Corsorposition aus, dann das rechte Leerzeichen (natürlich beachten, dass der Linke auch am Anfang oder am Ende stehen kann), dann kannst Du den link mit "mid$(..)" herausschneiden.

3. Dann nimmst Du die API-Funktion "ShellOpen" (such mal hier im VB-Forum oder im Windows APIForum danach, es sollte etwas dazu geben) und übergibst den Link. ShellOpen macht dann den Rest für Dich!

Gruss,
Mimo

4c1dI3uI2n
08.05.2002, 14:05
3. Dann nimmst Du die API-Funktion "ShellOpen" (such mal hier im VB-Forum oder im Windows APIForum danach, es sollte etwas dazu geben) und übergibst den Link. ShellOpen macht dann den Rest für Dich!

sowas in etwa:

Public Sub Hook()
lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _
AddressOf WindowProc)
End Sub

Public Sub Unhook()
Dim temp As Long
temp = SetWindowLong(gHW, GWL_WNDPROC, _
lpPrevWndProc)
End Sub

Function WindowProc(ByVal hw As Long, ByVal uMsg As _
Long, ByVal wParam As Long, ByVal lParam As Long) As _
Long
Debug.Print "Nachricht: "; hw, uMsg, wParam, lParam
WindowProc = CallWindowProc(lpPrevWndProc, hw, _
uMsg, wParam, lParam)
End Function

kannst mir das mit dem api nochmal näher erklären hab mir was zu durchgelesen und net so gechecked wie ich wohl eigentlich sollte, bitte ein oder zwei beispiele <- vielleicht bezogen auf man anliegen.

mfg

Mimo
08.05.2002, 16:07
ähem... hab mal nach der Beschreibung gesucht. Heisst gar nicht &quot;ShellOpen&quot; sondern &quot;ShellExecute&quot;... 8o Sorry!

Hat aber nix mit Hooken zu tun...

Hab mal ne kleine Funktion gemacht...

Private Declare Function ShellExecute Lib &quot;shell32.dll&quot; Alias &quot;ShellExecuteA&quot; (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Function StartInternetBrowser(ByVal URL As String) As Boolean
Dim s As String
Dim l As Long

s = URL
&acute;
If InStr(s, &quot;://&quot;) = 0 Then
s = &quot;hxxp://&quot; & s
End If
&acute;
l = ShellExecute(0, &quot;open&quot;, s, &quot;&quot;, &quot;&quot;, 1)
&acute;
&acute; alles <=32 sind Fehlermeldungen!
&acute;
StartInternetBrowser = l > 32
End Function

Das &quot;hxxp&quot; muss Du in &quot;http&quot; ändern. Ich musste allerdings hxxp schreiben, weil sonst das Board Sachen reinbaut, die gar nicht in den Code gehören! ;-)

Gruss,
Mimo