今回は、文字列にハイパーリンクを設定するサンプルコードを紹介します。
バージョン情報などにメッセージボックスを使用しなくても、ウィンドウで画像のように作成することができます。
このサンプルコードでは、ラベルの上にマウスカーソルを持って行った時に、ウェブブラウザのようにリンクに下線を付けることができます。
![文字列にハイパーリンクを設定する](https://autoit.windows-waza.com/wp-content/uploads/2022/07/文字列にハイパーリンクを設定する.png)
サンプルコード
#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
このサンプルでは、マウスカーソルを持って行った時にリンクに下線を付けていますが、逆もできます。
いろいろと応用できますので、コードをコピーして動作を確認してみてください。
コメント(降順)