サンプルコード

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をコピーしました