【AutoIt】文字列にハイパーリンクを設定する

今回は、文字列にハイパーリンクを設定するサンプルコードを紹介します。

バージョン情報などにメッセージボックスを使用しなくても、ウィンドウで画像のように作成することができます。

このサンプルコードでは、ラベルの上にマウスカーソルを持って行った時に、ウェブブラウザのようにリンクに下線を付けることができます。

文字列にハイパーリンクを設定する
左が通常時、右がマウスオーバーした時
目次

サンプルコード

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

Global $hWnd_B, $sTafb = False

$Form1 = GUICreate("文字列にハイパーリンクを設定する ", 300, 200, -1, -1, $WS_SIZEBOX)
GUICtrlCreateLabel("", 5, 10, 290, 3, $SS_ETCHEDHORZ)
GUICtrlCreateLabel("文字列にハイパーリンクを設定します。", 30, 20)
GUICtrlCreateLabel("", 5, 80, 290, 3, $SS_ETCHEDHORZ)

$Link = GUICtrlCreateLabel("https://autoit.windows-waza.com/", 20, 57, 300)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetColor(-1, 0x000090)
GUICtrlSetCursor (-1, 0)

GUICtrlCreateLabel("ユーザー定義関数 _Hyperlink()", 50, 100)

GUISetState()

While 1
    $Pos = GUIGetCursorInfo($Form1)
    If Not @error Then _Hyperlink($Pos[4], 10, 800, $Link)

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Link
            ShellExecute("https://autoit.windows-waza.com/")
    EndSwitch
WEnd

Func _Hyperlink($hWnd_A, $Fsize, $Fbold, $ControlID)
    If $hWnd_A = $ControlID Then
        If $sTafb = True Then
            GUICtrlSetFont($hWnd_A, $Fsize, $Fbold, 4)
            $hWnd_B = $hWnd_A
            $sTafb = False
        EndIf
    Else
        If $sTafb = False Then
            GUICtrlSetFont($hWnd_B, $Fsize, $Fbold)
            $sTafb = True
        EndIf
    EndIf
EndFunc   ;==>_Hyperlink


コードの解説

Global $hWnd_B, $sTafb = False

グローバル変数を宣言します。

$Pos = GUIGetCursorInfo($Form1)

GUIウィンドウに対するマウスカーソルの相対位置を取得します。


If Not @error Then _Hyperlink($Pos[4], 10, 800, $Link)

$Pos[4] がマウスカーソルが当たっているコントロールの ID になります。

この2行のコードをループの中に入れて常にマウスカーソルの位置を取得しています。

ユーザー定義関数

Func _Hyperlink($hWnd_A, $Fsize, $Fbold, $ControlID)
    If $hWnd_A = $ControlID Then
        If $sTafb = True Then
            GUICtrlSetFont($hWnd_A, $Fsize, $Fbold, 4)
            $hWnd_B = $hWnd_A
            $sTafb = False
        EndIf
    Else
        If $sTafb = False Then
            GUICtrlSetFont($hWnd_B, $Fsize, $Fbold)
            $sTafb = True
        EndIf
    EndIf
EndFunc   ;==>_Hyperlink

マウスカーソルの位置を、作成したユーザー定義関数「_Hyperlink()」でチェックします。

_Hyperlink(ハンドル, フォントサイズ, フォントの太さ, コントロールID)

_Hyperlink($Pos[4], 10, 800, $Link)

If $hWnd_A = $ControlID Then ; もしもマウスカーソルが当たっているコントロールの IDが、指定したコントロールIDと同じなら

If $sTafb = True Then ; もしも変数 $sTafb が True なら


GUICtrlSetFont($hWnd_A, $Fsize, $Fbold, 4) ; 指定したコントロールIDのフォントサイズ、太さを変更し、さらに 文字列に下線を付けます。


$hWnd_B = $hWnd_A ; グローバル変数 $hWnd_B に 変数 $hWnd_A を代入します。


$sTafb = False ; 変数 $sTafb に False を代入します。
EndIf


Else ; もしも変数 $sTafb が False なら


If $sTafb = False Then ; もしも変数 $sTafb が False なら


GUICtrlSetFont($hWnd_B, $Fsize, $Fbold) ; ; 指定したコントロールIDのフォントサイズ、太さを元に戻します。
$sTafb = True ; 変数 $sTafb に True を代入します。
EndIf
EndIf

このサンプルでは、マウスカーソルを持って行った時にリンクに下線を付けていますが、逆もできます。

いろいろと応用できますので、コードをコピーして動作を確認してみてください。

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次