サンプルコード

Autoit|Chrome のブックマークリストを表示、ページを開く

今回は、Google Chrome のブックマークリストを取得してコンボボックスに表示し、選択したブックバークのページを開くサンプルコードを紹介します。

Google Chrome のブックマークファイルが見つからない場合はツールを終了するようにしています。

サンプルコードを参考に、いろいろと変更してみてください。

Chrome のブックマークリストを表示、ページを開くサンプルコード


#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile_x64=GoogleBookmarks.exe
#AutoIt3Wrapper_Res_Description=Google Chrome ブックマークリストを表
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_ProductName=Google Chrome ブックマーク
#AutoIt3Wrapper_Res_ProductVersion=1.0
#AutoIt3Wrapper_Res_CompanyName=©2023 wenbang https://windows-waza.com/
#AutoIt3Wrapper_Res_LegalCopyright=©2023 wenbang https://windows-waza.com/
#AutoIt3Wrapper_Res_LegalTradeMarks=GoogleBookmarks.exe
#AutoIt3Wrapper_Res_Language=1041
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <GuiComboBox.au3>
#include-once

Opt("WinTitleMatchMode", 2); ウィンドウタイトル 部分一致

; Google Chrome のブックマークファイルのパス
$Bookmarks = @UserProfileDir & "\AppData\Local\Google\Chrome\User Data\Default\Bookmarks"

Global $List; 変数の宣言

$Form1 = GUICreate("Google Chrome ブックマーク", 800, 140, 192, 124, -1, $WS_EX_TOPMOST)
GUISetFont(14); フォントサイズを指定

$MenuItem1 = GUICtrlCreateMenu("ファイル")
$MenuItem5 = GUICtrlCreateMenuItem("終了", $MenuItem1)
$MenuItem2 = GUICtrlCreateMenu("ヘルプ")
$MenuItem3 = GUICtrlCreateMenuItem("WEBサイトへ", $MenuItem2)
$MenuItem4 = GUICtrlCreateMenuItem("バージョン", $MenuItem2)

$Combo1 = GUICtrlCreateCombo("", 24, 8, 753, 50)
$Button1 = GUICtrlCreateButton("選択したページを開く", 24, 50, 753, 50)
GUICtrlSetCursor(-1, 0); ボタンの上にマウスカーソルを重ねた際に、カーソルを手の形にします。

$favorite = _FileRead($Bookmarks); ブックマークファイルを読み取ります。

; ブックマークファイルの読み取りに失敗した場合、メッセージボックスを表示してツールを終了します。
If Not $favorite Then Exit (MsgBox(16, "エラー", "ブックマークファイルが見つかりません。ツールを終了します。"))

; Google Chrome が既定のブラウザでない場合はツールを終了します。
$Chrome = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice", "ProgId")
If $Chrome <> "ChromeHTML" Then Exit (MsgBox(16, "エラー", "Google Chrome は既定のブラウザではありません。ツールを終了します。"))

; ブックマークのタイトルを取得します。
$Bookmark_Name = StringRegExp($favorite, '(?s)"name": "([^"]+)".+?"url": "', 3)

; ブックマークの URL を取得します。
$Bookmark_Url = StringRegExp($favorite, '(?s)"name": "[^"]+".+?"url": "(\w+://[^"]+)"', 3)

For $i = 0 To UBound($Bookmark_Url) - 1
    If $Bookmark_Url[$i] Then
        ; ブックマーク名に「|」または「|」が含まれているとコンボボックスに正しく表示できないので、「|」と「|」を削除します。
        ; (プログラム内でのみ表示しないようにしますので Bookmarks ファイルに影響はありません)
        $List &= StringRegExpReplace($Bookmark_Name[$i], "||\|", "") & "|"
    Else
        ExitLoop
    EndIf
Next

GUICtrlSetData($Combo1, $List); コンボボックスにブックマークリストをセットします。
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $sel = _GUICtrlComboBox_GetCurSel($Combo1); 現在選択されているアイテムのインデックスを取得します。

            If $sel <> -1 Then
                If $Bookmark_Url[$sel] = "chrome://newtab/" Then; ブックマークの URL が新しいタブならば
                    If ProcessExists("chrome.exe") Then; もしも Chrome が起動していれば
                        WinActivate(" Google Chrome"); Chrome をアクティブにします。
                        ControlSend(" Google Chrome", "", "[class:Chrome_RenderWidgetHostHWND]", "^t"); 新しいタブを開くショートカットを送信します。
                    Else; もしも Chrome が起動していなければ Chrome を起動します。
                        ShellExecute(@HomeDrive & "\Program Files (x86)\Google\Chrome\Application\chrome.exe")
                    EndIf
                Else
                    ShellExecute($Bookmark_Url[$sel]); 選択したブックマークの URL を Chrome(既定のブラウザ) で開きます。
                EndIf
            EndIf
        Case $MenuItem3
            ShellExecute("https://autoit.windows-waza.com/")
        Case $MenuItem4
            MsgBox(0, "バージョン", "1.0")
    EndSwitch
WEnd

Func _FileRead($File)
    Local $open = FileOpen($file)
    If $open = -1 Then
        Return False
    EndIf
    Local $read = FileRead($open)
    FileClose($open)
    Return $read
EndFunc   ;==>_FileRead

コンボボックスには Google Chrome で追加したブックマークのリストが表示されます。

ブックマークを選択し、「選択したページを開く」ボタンをクリックすると Google Chrome でページを開きます。

47,48行目のコードを削除すれば既定のブラウザで Google Chrome のブックマークのページを開くことが出来ます。

$Chrome = RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice", "ProgId")
If $Chrome <> "ChromeHTML" Then Exit (MsgBox(16, "エラー", "Google Chrome は既定のブラウザではありません。ツールを終了します。"))

Autoit の基礎 – レジストリの読み取り、書き込みと削除

コメント