Ok, fråga 1:
För att ta fram default-browser använder vi API.t "FindExecutable", som helt enkelt ger oss sökvägen som skulle öppna en viss fil. Detta används alltså till alla sorters filer.
Vad vi gör är att vi skapar en "dummy" fil (html) i tmp-katalogen som vi sedan kör mot API.t, vi får då sökvägen...Skapa bara en label som heter label1 och testa...vid click så kör vi "shell" metoden på sökväg + url.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Option Explicit
Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" _
(ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal sResult As String) As Long
Private Declare Function GetTempPath Lib "kernel32" _
Alias "GetTempPathA" _
(ByVal nSize As Long, _
ByVal lpBuffer As String) As Long
Private Const MAX_PATH As Long = 260
Private Function DetermineDefaultBrowser() As String
Dim BrowserPath
Dim Success As Long
BrowserPath = GetBrowserName(Success)
DetermineDefaultBrowser = BrowserPath
End Function
Private Function GetBrowserName(dwFlagReturned As Long) As String
Dim hFile As Long
Dim sResult As String
Dim sTempFolder As String
sTempFolder = GetTempDir()
hFile = FreeFile
Open sTempFolder & "dummy.html" For Output As #hFile
Close #hFile
sResult = Space$(MAX_PATH)
dwFlagReturned = FindExecutable("dummy.html", sTempFolder, sResult)
Kill sTempFolder & "dummy.html"
GetBrowserName = TrimNull(sResult)
End Function
Private Function TrimNull(item As String)
Dim pos As Integer
pos = InStr(item, Chr$(0))
If pos Then
TrimNull = Left$(item, pos - 1)
Else: TrimNull = item
End If
End Function
Public Function GetTempDir() As String
Dim nSize As Long
Dim tmp As String
tmp = Space$(256)
nSize = Len(tmp)
Call GetTempPath(nSize, tmp)
GetTempDir = TrimNull(tmp)
End Function
Private Sub Label1_Click()
Shell DetermineDefaultBrowser & " <A HREF="http://www.aftonbladet.se"" TARGET=_blank>http://www.aftonbladet.se"</A>
End Sub
...och så fråga 2...
För att göra detta använder vi ett litet API som heter "SetWindowPos" som vi hittar i "user32". Vi börjar därför att deklarerar vårt API-anrop med den konstant som behövs. Vad som krävs för att köra API.t är bla. ditt window-handler, dvs det ID som representerar ditt fönster i windows. Detta får du genom tex.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
form1.hwnd
När vi sen kör API:t så sätts aktuellt fönster till toppen, men om du nu aktiverar ett annat fönster så hamnar första fönstret bakom igen, så vill du alltså att fönstret stannar uppe hela tiden får du lägga API-anropet i en timer som körs hela tiden, koden ser ut så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Sub Command1_Click()
Dim lngRet As Long
Form1.WindowState = 0
lngRet = SetWindowPos(Form1.hWnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS)
end sub
Så där nånting, detta förutsätter förstås att du har en knapp som heter command1 och att formuläret hter form1.
Det ska funka fint!
/fredrik
------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/
[Redigerat av fredrik den 13 jul 2001]