Skip to content

Instantly share code, notes, and snippets.

@ynkdir
ynkdir / asyncio_win32_loop.py
Last active December 14, 2024 02:20
Connecting Asyncio and Win32 event loops
# /// script
# dependencies = ["win32more"]
# ///
import asyncio
import threading
from concurrent.futures import Future
from queue import Queue
from win32more import WinError
@ynkdir
ynkdir / asyncio_tkinter_guest.py
Last active December 20, 2024 15:16
Connecting Asyncio and Tkinter event loops
# Asyncio guest mode
#
# [Using “guest mode” to run Trio on top of other event loops](https://trio.readthedocs.io/en/stable/reference-lowlevel.html#using-guest-mode-to-run-trio-on-top-of-other-event-loops)
#
#
# Trio's guest mode model
#
# UI thread Asyncio thread
#
# +------------+
@ynkdir
ynkdir / outlook-smtp-oauth.py
Last active October 5, 2024 13:45
Authenticate Outlook SMTP connection using OAuth
# Authenticate Outlook SMTP connection using OAuth
#
# 1. Create account at https://portal.azure.com/
#
# 2. Register New App to Microsoft Entra ID.
# Select Native Application.
# Select "Personal Microsoft accounts only".
# Set redirect_uri.
# It seems that No API permission required.
#
@ynkdir
ynkdir / pmf.py
Last active July 28, 2024 06:48
pmf file
# --------------------------------------
# TOA .pmf file
# --------------------------------------
# uint8_t id[32]; // "N-8000 message\r\n"
# uint8_t name[128]; // Name encoded in Shift-JIS
# uint8_t created[32]; // Created date: yyyy-mm-dd HH:MM:SS
# uint32_t audio16k_size; // Size of 16k audio data
# uint32_t audio8k_size; // Size of 8k audio data
# uint32_t checksum; // Sum of audio16k_data and audio8k_data
# uint8_t audio16k_data[audio16k_size]; // Audio data: G722 16k sample rate 16bit mono
@ynkdir
ynkdir / ctypes_meta.py
Created January 27, 2024 09:50
Meta class for ctypes definition
import ctypes
import inspect
class GlobalFirstAndNoClassPrivateNamespace:
def __init__(self, name, globals_):
self._class_scope = f"_{name}"
self._globals = globals_
self._dict = {}
def __getitem__(self, key):
@ynkdir
ynkdir / mydumpbin.c
Created December 24, 2023 13:10
mydumpbin
// mydumpbin.c
//
// Reference:
// http://msdn.microsoft.com/msdnmag/issues/02/03/PE2/default.aspx
// http://forums.belution.com/ja/vc/000/234/78s.shtml
// http://nienie.com/~masapico/api_ImageDirectoryEntryToData.html
// http://www.geocities.jp/i96815/windows/win09.html
// http://hp.vector.co.jp/authors/VA050396/index.html
#include <windows.h>
@ynkdir
ynkdir / clangdump.py
Last active August 25, 2022 11:24
Python bindings for Win32 API generated using clang
import sys
import clang.cindex
clang.cindex.Config.set_library_path(r'C:\Program Files\LLVM\bin')
def visit(cursor, indent):
print("%s[KIND:%s] { extent: { File:%s, start:{ l:%d, c:%d }, end {l:%d, c:%d } } , spelling:%s, type:{ kind:%s, spelling:%s } }" % (
' ' * indent,
cursor.kind.name,
cursor.extent.start.file,
@ynkdir
ynkdir / ndlsearch.py
Last active May 4, 2019 16:31
国立国会図書館サーチを使って新刊コミック(に限らず)を検索する
# 国立国会図書館サーチを使って新刊コミック(に限らず)を検索する
#
# 国立国会図書館サーチ API仕様の概要
# https://iss.ndl.go.jp/information/api/riyou/
#
# 2019年4月1日 国立国会図書館の書誌データは、様々な用途で自由にご利用いただけます
# https://www.ndl.go.jp/jp/news/fy2019/190401_02.html
#
# 出版情報登録センターとの連携強化による機能改善のお知らせ
# https://iss.ndl.go.jp/information/2018/06/28_announce_jpro/
@ynkdir
ynkdir / fhverify.cs
Last active January 3, 2018 17:06
Windows FileHistory Verifier
// public domain
//
// Windows10 のバックアップ(ファイル履歴)は半角全角違いの同名ファイルを扱えない
// が、バックアップがどこで失敗してるのかは教えてくれないので、バックアップでき
// ていないファイルを見つけるスクリプト。
//
// using https://github.com/Microsoft/ManagedEsent
// csc fhverify.cs /r:Esent.Interop.dll
//
// NOBACKUP: 最新のファイルが(まだ)バックアップされていない(データベースにエントリがない)
@ynkdir
ynkdir / mlang_example.cpp
Created February 4, 2016 07:26
Mlang COM example
// Mlang via COM example.
// https://msdn.microsoft.com/en-us/library/aa767865.aspx
#pragma comment(lib, "ole32.lib")
#include <windows.h>
#include <mlang.h>
#include <stdio.h>
#include <string.h>