'Alt+F10 then Ctrl+V

Code:
#Compile Exe #Dim All #Register None #Include "Win32Api.Inc" Sub AddToBootUp(AppDesc As Asciiz, AppPath As Asciiz) Dim hKey As Long RegOpenKey %HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", hKey If hKey Then RegSetValueEx hKey, AppDesc, ByVal %Null, %REG_SZ, AppPath, Len(AppPath): _ RegCloseKey hKey End Sub FUNCTION WriteToClipBoard (CBDataType AS LONG, BYVAL Text AS STRING) AS LONG DIM cADDR AS LOCAL LONG DIM hData AS LOCAL LONG DIM Bytes AS LOCAL LONG Text = Text + CHR$(0) Bytes = LEN(Text) IF Bytes < 2 THEN EXIT FUNCTION hData = GlobalAlloc(&h2002,Bytes) cADDR = GlobalLock(hData) POKE$ cADDR, Text GlobalUnlock hData IF ISFALSE OpenClipboard(0) THEN GlobalFree hData EXIT FUNCTION END IF EmptyClipboard SetClipboardData CBDataType, BYVAL hData CloseClipboard FUNCTION = 1 END FUNCTION Function RemoveHtml(ByVal Buf As String) As String Register k As Long Dim k1 As Long, k2 As Long, lBuf As Long ReDim bBuf(0 To lBuf - 1) As Byte At StrPtr(Buf) lBuf = Len(Buf): If lBuf < 1 Then Exit Function ' Delete Java k1 = 1 Do If k1 > lBuf Then Exit Do k2 = Instr(k1, Buf, "<-"): If k2 = 0 Then Exit Do k1 = Instr(k2 + 2, Buf, "->") If k1 = 0 Then k1 = lBuf + 1 Else k1 = k1 + 2 For k = k2 - 1 To k1 - 2: bBuf(k) = 0: Next: Loop ' Delete tags k1 = 1 Do If k1 > lBuf Then Exit Do k2 = Instr(k1, Buf, "<"): If k2 = 0 Then Exit Do k = k2 - 1 Do Decr k: If k < 0 Then Exit Do If (bBuf(k) = 13) Or (bBuf(k) = 10) Or (bBuf(k) = 32) Then bBuf(k) = 0 ElseIf bBuf(k) Then bBuf(k + 1) = 32: Exit Do End If Loop k1 = Instr(k2 + 1, Buf, ">"): If k1 = 0 Then k1 = lBuf Select Case UCase$(Mid$(Buf$, k2 + 1, k1 - k2 - 1)) Case "P", "BR": bBuf(k2 - 1) = 13: bBuf(k2) = 10: k2 = k2 + 2 Case "HTML", "/HEAD": k2 = 1 Case "/HTML": k1 = lBuf End Select Incr k1: For k = k2 - 1 To k1 - 2: bBuf(k) = 0: Next Loop ' Replace &NBSP; > < k1 = 1 Do If k1 > lBuf Then Exit Do k2 = Instr(k1, Buf, "&"): If k2 = 0 Then Exit Do k1 = Instr(k2 + 1, Buf, ";"): If k1 = 0 Then Exit Do Select Case UCase$(Mid$(Buf$, k2 + 1, k1 - k2 - 1)) Case "NBSP": bBuf(k2 - 1) = 32: Incr k2 Case "GT" : bBuf(k2 - 1) = 62: Incr k2 Case "LT" : bBuf(k2 - 1) = 60: Incr k2 Case "AMP" : Incr k2 Case Else : k2 = 0 End Select If k2 Then For k = k2 - 1 To k1 - 1: bBuf(k) = 0: Next Incr k1 Loop k1 = 0 For k = 0 To lBuf - 1 If bBuf(k) Then bBuf(k1) = bBuf(k): Incr k1 Next Function = Rtrim$(Left$(Buf, k1)) End Function CallBack Function DlgProc Dim hData As Asciiz Ptr, s As String, i As Long, k As Long, kk As Static Long Dim PbSamplesPath As Static Asciiz * %MAX_PATH, PbEditPath As Static Asciiz * %MAX_PATH, nAtom As Static Dword Select Case CbMsg Case %WM_INITDIALOG If RegCreateKeyEx(%HKEY_CURRENT_USER, "Software\PowerBasic\PB/DLL\6.00\Compiler", _ ByVal 0&, "", %REG_OPTION_NON_VOLATILE, %KEY_ALL_ACCESS, ByVal 0&, k, i) <> %ERROR_SUCCESS Then ElseIf k Then If RegQueryValueEx (k, "Compiler", ByVal 0&, %REG_SZ, PbSamplesPath, SizeOf(PbSamplesPath)) = %ERROR_SUCCESS Then i = Instr(-1, PbSamplesPath, "\") If i > 0 Then PbEditPath = Left$(PbSamplesPath, i): _ Asc(PbSamplesPath, i) = 0: i = Instr(-1, PbSamplesPath, "\") Asc(PbSamplesPath, i + 1) = 0 If i > 0 Then PbSamplesPath = PbSamplesPath + "Samples\" End If RegCloseKey k End If nAtom = GlobalAddAtom ("My Hotkey" + Str$(Timer)) RegisterHotKey CbHndl, nAtom, 1, %VK_F10 ' Alt-F10 PostMessage CbHndl, %WM_USER + 401, 0, 0 Case %WM_USER + 401: ShowWindow CbHndl, 0 Case %WM_DESTROY UnregisterHotKey CbHndl, nAtom GlobalDeleteAtom nAtom Case %WM_HOTKEY OpenClipboard 0 If kk = 0 Then kk = RegisterClipboardFormat ("HTML Format") Do k = EnumClipboardFormats(k): If k = 0 Then Exit Do If kk = k Then hData = GetClipboardData(k): If hData Then s = @hData: Exit Do Loop CloseClipboard s = RemoveHTML(s) If Len(s) Then WriteToClipBoard 1, s End Select End Function Function PbMain Dim TmpAsciiz As Asciiz * %MAX_PATH If GetModuleFileName(GetModuleHandle(ByVal 0&), TmpAsciiz, _ SizeOf(TmpAsciiz)) = 0 Then Exit Function AddToBootUp "Hotkey Alt-F10", TmpAsciiz Local hDlg As Long Dialog New 0, "Copy BAS from BBS (Alt-F10)", 0, 0, 0, 0, %WS_POPUP, _ %WS_EX_TOPMOST Or %WS_EX_TOOLWINDOW To hDlg Dialog Show Modal hDlg Call DlgProc End Function
------------------
Leave a comment: