---
title: "klickbara länkar (label) och minemerad till focus"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/27612-klickbara-länkar-label-och-minemerad-till-focus"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Brimba"
published: "2001-07-12T14:41:00.000Z"
updated: "2001-07-13T09:46:00.000Z"
replies: 3
views: 478
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/27612-klickbara-länkar-label-och-minemerad-till-focus"
---

# klickbara länkar (label) och minemerad till focus

## #1 — Brimba, 2001-07-12T14:41Z

Hej!

**1**
Låt säga att jag har en label med caption "Hemsida". Hur gör man den klickbar till användarens standardwebbläsare?

**2**
När man har minimerat ett program och vill att det (vid en speciell händelse) skall plockas fram (ovanför alla andra program som är aktiva)
Hur gör man då?
Jag har försökt med:

frmMain.WindowState = 0
frmMain.Show
frmMain.SetFocus

Men det vill inte riktigt fungera.

Tips?

Permalänk: https://www.webforum.nu/p/27612

## #2 — toha, 2001-07-13T08:36Z

Dim WshShell As Object

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run ("iexplore \<A HREF="http://www.sunet.se/")" TARGET=\_blank\>http://www.sunet.se/")\</A\> 
Set WshShell = Nothing

Permalänk: https://www.webforum.nu/p/396522

## #3 — Brimba, 2001-07-13T09:07Z

Är det verkligen standardwebbläsaren?

Det verkar vara mer internet explorer den ropar på.

Permalänk: https://www.webforum.nu/p/396523

## #4 — fredrik, 2001-07-13T09:46Z

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

Permalänk: https://www.webforum.nu/p/396524

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/27612-klickbara-länkar-label-och-minemerad-till-focus
