こんな感じ
const auto commonLogic = [](bool isInit) { // 共通処理 }; dlg.RegisterMenu(ID_ADDCLIPBORD, [](&commonLogic) { commonLogic(false); }); dlg.RegisterMenu(ID_INITCLIPBORD, [](&commonLogic) { commonLogic(true); });
こんな感じ
const auto commonLogic = [](bool isInit) { // 共通処理 }; dlg.RegisterMenu(ID_ADDCLIPBORD, [](&commonLogic) { commonLogic(false); }); dlg.RegisterMenu(ID_INITCLIPBORD, [](&commonLogic) { commonLogic(true); });
# 仮想環境をアクティブ化して .venv\Scripts\activate # インストール済みパッケージのリストを作成 uv pip freeze > requirements.txt
URL指定では呼んでくれないことがほとんどないので、
まずURL先をDLして読み込んでもらうpyコード作ってもらって実行してもらうが吉。
htttps://hogehoge.com の内容をダウンロードするpythonコードを書いてダウンロードしてください。 ダウンロードしたら内容を読み込んで理解してください
現在最も推奨されているのは venv の使用です。これはPythonに標準で組み込まれており、最も安定していて信頼性が高いためです。
新しいプロジェクトディレクトリの作成と移動:
mkdir myproject cd myproject
仮想環境の作成:
python -m venv .venv
仮想環境の有効化:
Windows の場合:
.venv\Scripts\activate
\n[^a-zA-Z0-9+-]
clumsyを使おう
管理者権限でexeを起動
受信の調子を悪くした環境を趣味レート下かあtらPresetsの欄で「all receiving packets」を選ぶ。
Startボタンでシミュレート開始
Stopで止まる
LagとかDropにチェックいれて、具合のわるい感じをON/OFFする。
import requests from typing import Optional .... # Discord通知用の設定 DISCORD_WEBHOOK_URL = "https://discord.com/api/webhooks/xxxxxx" # ここにDiscord WebhookのURLを設定してください # Discord通知用の関数 def send_discord_notification(message: str) -> bool: """Discordにメッセージを送信する""" try: payload = {"content": message} response = requests.post(DISCORD_WEBHOOK_URL, json=payload) return response.status_code == 204 except Exception as e: print(f"Discord通知エラー: {e}") return False
Discordのバッジ(未読通知)を表示させるためには、メッセージにメンション(@)を含める必要があります。
例:
send_discord_notification('@everyone testだよ')
通知を送りたいチャンネルの横にある⚙️(歯車アイコン)をクリック
または、チャンネル名を右クリックして「チャンネルの設定」を選択
左側のメニューから「連携サービス」をクリック
「Webhook」セクションにある「新しいWebhook」をクリック
Webhookの名前を設定(例:「GMOコイン通知Bot」)
アイコンも必要に応じて変更可能
作成したWebhookの下にある「WebhookのURL」の「コピー」ボタンをクリック
BOOL IsWindows10OrGreater() { HMODULE hNtdll = GetModuleHandleW(L"ntdll.dll"); if (!hNtdll) return FALSE; typedef void (WINAPI *RtlGetVersionPtr)(PRTL_OSVERSIONINFOW); RtlGetVersionPtr RtlGetVersion = (RtlGetVersionPtr)GetProcAddress(hNtdll, "RtlGetVersion"); if (!RtlGetVersion) return FALSE; RTL_OSVERSIONINFOW osvi = { 0 }; osvi.dwOSVersionInfoSize = sizeof(osvi); RtlGetVersion(&osvi); return (osvi.dwMajorVersion >= 10); }
windowHandleにEdgeのハンドル渡す。
タイトルにHogeHogeがあるタブをキー押して消してる
// タブを閉じる処理 void CloseTab(HWND windowHandle) { if (!IsWindow(windowHandle)) { return; } TCHAR title[256] = { 0 }; if (!GetWindowText(windowHandle, title, 256)) { return; } if (_tcsstr(title, _T("HogeHoge")) != nullptr) { TRACE(_T("Closing auth tab: %s\n"), title); // Ctrl+Wキーの送信 INPUT inputs[4] = {}; // Ctrl キーを押す inputs[0].type = INPUT_KEYBOARD; inputs[0].ki.wVk = VK_CONTROL; // W キーを押す inputs[1].type = INPUT_KEYBOARD; inputs[1].ki.wVk = 'W'; // W キーを離す inputs[2].type = INPUT_KEYBOARD; inputs[2].ki.wVk = 'W'; inputs[2].ki.dwFlags = KEYEVENTF_KEYUP; // Ctrl キーを離す inputs[3].type = INPUT_KEYBOARD; inputs[3].ki.wVk = VK_CONTROL; inputs[3].ki.dwFlags = KEYEVENTF_KEYUP; // ウィンドウをフォアグラウンドに if (SetForegroundWindow(windowHandle)) { Sleep(100); // ウィンドウがフォアグラウンドになるのを待つ SendInput(4, inputs, sizeof(INPUT)); } else { TRACE(_T("Failed to set foreground window\n")); } } else { TRACE(_T("Skip closing tab: %s\n"), title); } }
certutil -csp "SafeNet Smart Card Key Storage Provider" -key -user -v
Cert ハッシュ(sha1)をメモります。
signtool.exeの場所は環境に合わせて変えてください
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe" sign ^ /fd sha256 ^ /tr http://timestamp.sectigo.com ^ /td sha256 ^ /sha1 <メモったハッシュ> ^ /v /debug /a ^ "hogehoge.exe"
無事署名出来たらOK
プロパティ>ビルド>イベントに”ビルド後のイベント”の欄があるので以下のように入力。
signtool.exeの場所は環境に合わせて変えてください
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe" sign ^ /fd sha256 ^ /tr http://timestamp.sectigo.com ^ /td sha256 ^ /sha1 <メモったハッシュ> ^ /v /debug /a ^ "$(TargetPath)"
echo Starting code signing for MFC application... echo Target file: "$(OutDir)$(TargetName)$(TargetExt)" "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe" sign ^ /fd sha256 ^ /tr http://timestamp.sectigo.com ^ /td sha256 ^ /sha1 <メモったハッシュ> ^ /v /a ^ "$(OutDir)$(TargetName)$(TargetExt)" if errorlevel 1 ( echo Code signing failed with error level %errorlevel% exit /b %errorlevel% ) echo Code signing completed successfully