WinAPI

C93 1日目-キ40b で参加します!

@see http://d.hatena.ne.jp/ir9/20171228/1514446008

Win32エラーコード一覧のページを更新しました!

Windowsのエラーコードを FormatMessage() で抽出しただけのページを更新しました! 忘れてないよ! 更新しようと思い続けてたんだよ!マジで! ちなみに前回は 2005年4月に更新していたらしので、実に12年ぶりの更新となりました。 …そんだけHP続けてるとか…

C90新作 - 《WinAPI》Path系API 試用&カテゴライズ本 [20年遅い]

C90でこんな本出しますー。 100p ぐらい。 3日目 西f-06b でお待ち申す!@see C90新作 - 《WinAPI》Path系API 試用&カテゴライズ本[20年遅い]

ファイルパス周りの用語が解らなくなりはじめて死亡

やだ恥ずかしい…… パス例 日本語圏 英語圏 notepad.exe.\notepad.exe..\notepad.exe 相対パス relative path \windows\notepad.exe ? absolute path c:\windows\notepad.exe 絶対パス / フルパス fully qualified path (完全修飾パス) …で、良いのかしら……

ファイル名に数字が入ったディレクトリをExplorerで名前ソートで表示した場合、ただの文字列比較じゃない感じでソートされるヤツの文字列比較関数があったァァァァ!!!

StrCmpLogicalWへぇえええ!!しかしなんというか、こんな関数よく実装したよねって思う。超面倒な気がするんだけど(ぉ

PathQuoteSpaces() の戻り値の型がモノによって異なっていて死亡

// VC6 LWSTDAPI_(void) PathQuoteSpacesA(LPSTR lpsz); LWSTDAPI_(void) PathQuoteSpacesW(LPWSTR lpsz); // VC2003 LWSTDAPI_(void) PathQuoteSpacesA(LPSTR lpsz); LWSTDAPI_(void) PathQuoteSpacesW(LPWSTR lpsz); // VC2005 LWSTDAPI_(void) PathQuoteS…

管理者権限で SE_RESTORE_NAME, SE_BACKUP_NAME も与えたのに RegLoadKey() が 1314 を返してきて死亡

C# のテストプロジェクト内でこの問題に遭遇。 困ったことに、デバッグでテストを開始するとロードに成功するにも関わらず、ただの実行だと 1314 を返すという………なんなの…… 解決できた方法 TestInitialize で SE_RESTORE_NAME, SE_BACKUP_NAME を与えていま…

絶望した! PathRemoveBackslash() に絶望したァ!!

取得したパスを他のプログラムに渡すべく、コマンドライン引数に渡す…という処理を書いたのです。 イメージ的にはこんな感じ。 # コマンドラインで書くとこんな感じ。 # スペース入ることがあるので "" で囲ってあげる >foo.exe "%PathInfo%" "%bar_param%"…

WinXP x64 で、DEFAULT_GUI_FONT が微妙なのはどうにかならんのかなぁ

WinXP 64bit Edition だけ、GetStockObject(DEFAULT_GUI_FONT) で取得できるデフォルトのフォントの大きさが違ってまいっちんぐ。 ちゃんと 9pt を指定してるのに、8.25pt(?) になっちゃってるんですよね。ちっともデフォルト見てくれないのは一体…まぁ多分…

フック解放時の挙動がよく分からない

金糸雀オンリーの時に出した新作アプリ(フックしてごにょごにょするモノ)なんですが、特定のアプリケーションのみ終了時に落ちるという状況が発生しています。トレースしてみたところ……(あ、前提として、グローバルにデストラクタ付きのオブジェクトAが…

多重起動に関する考察 - Win32API質問箱の場合

217 名前: デフォルトの名無しさん [sage] 投稿日: 2008/03/10(月) 23:32:49 多重起動禁止といえば、俺はいつもCreateMutex→CreateWindowの順で やっていたが、CreateWindow→CreateMutexにしないと穴があるな。 既に起動しているインスタンスがあれば、そ…

便利っぽいけど、登場させる場面に悩む関数

http://msdn.microsoft.com/library/ja/jpmemory/html/_win32_isbadcodeptr.asp http://msdn.microsoft.com/library/ja/jpmemory/html/_win32_isbadreadptr.asp http://msdn.microsoft.com/library/ja/jpmemory/html/_win32_isbadstringptr.asp http://msdn.…

Vlm系関数は無かったことに?

64bit メモリ空間操作用として VirutalAllocVlm など、VLM (Very Large Memory) 系の関数があります。以下リスト(抜けがあるかも)。 CopyMemoryVlm FillMemoryVlm MapViewOfFileVlm MoveMemoryVlm ReadFileVlm ReadProcessMemoryVlm UnmapViewOfFileVlm Vi…

エディットボックスに対してオートコンプリートを実装する。

GetOpenFileName / GetSaveFileName で開くコモンダイアログのファイル名のエディットボックス*1に、手動でパスを入力していくと候補が勝手に出てきて手軽にファイル名を選択することが出来るじゃないですか。この機能、自前アプリケーションでも使いたいな…

GUIDを文字列化したい……ってえー

タイトルのように、GUID を 文字列化したかったのです。 ちなみに、その文字列をファイルに書き込んでみたり、書き込んだ値を読み込んで再度 GUID に戻してみたり…という事を計画してます。さて、GUID を printf とかで自前で文字列化する方法も取れますが、…

メニュー関係が良く解らない。

AppendMenu や InsertMenu 等で動的にメニューの内容を変えられ、且つ、CreateMenu や CreatePopupMenu 等で動的にメニューリソースを確保する事が出来ますがー さて、CreatePopupMenuで、サブメニューを動的に追加しようとします。 ハンドルを新しく作成し…

フルスクリーンの検出について検討してみる。

何かしら常駐アプリを作った時*1、「DirectXを利用したフルスクリーンのゲームが動いているときは、特定の処理を行いたくない!」というケースが発生する事があります。フルスクリーンで集中して遊んでいる中、突然謎の音が鳴ったり、謎の通知ウィンドウが出…

Visual Studio 2005 の「最適化付き x64 build」で不正なコードが生成される問題について

コミケ直前にこの問題に遭遇して、x64 build のリリース大丈夫かとヒヤヒヤしましたが…^^;さて、この問題について検証してみました。テストコードとして次のコードを打ち*1、x64 build 最適化付き (/O2, /Ox) でビルドしてみると可憐に落ちます。 enum ET…

Vista β2 で、DLLを利用するとなんか挙動がおかしい気がする…

ある自作DLLが export している関数を、メインのアプリケーションから呼んだとします。 で、このDLLは遅延読み込みを行い、初めてそのDLLが読み込まれたとシマス。関数を呼ぶところでDLLが読み込まれ DllMain が実行されますがー DllMain を抜けたところで落…

割と驚いちゃった事。

http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/hooks/hookreference/hookfunctions/callnexthookex.asp?frame=true LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam ); hhk Ignored. !…

共有メモリ空間って排他処理しなくていいのだろうか?

CreateFileMapping と MapViewOfFile を利用すると、プロセス間を超えた共有メモリ空間を作成することができますがーこれ、つまりは 「同じメモリ空間に対して、複数のプロセスから同時にアクセスされる可能性がある」 == 排他処理しないと落ちるんじゃね!…

ランタイムエラー R6034

R6034 An application has made an attempt to load the C runtime library without using a manifest. This is an unsupported way to load Visual C++ DLLs. You need to modify your application to build with a manifest. For more information, see th…

(ようやく)VS2005のインストール……ってうそ〜ん!

VS2005β2 をインストールしたまま、結局大して使わず 試用期間を終えてしまった研究室のx64マシンですが、本日ようやく正式リリース版の VS2005 を入れることにしたわけですよ。ただ、VS2005β2 は正しくアンインストールしないと、正式リリース版がうまく動…

Vista の Winsock - recv関数がなんかおかしい?

当サークルのソフトウェア、薔薇乙女メールチェッカー きてますか?きてませんか? ですが、コレ動作対象プラットフォームを Windows 2000 Windows XP Windows XP 64bit Edition Windows Vista (たぶん) という事にしておいたのです。 Windows 2000 での開発…

バグの理由

自作ソフトウェア RozenBiff でバグが出てしまった わけですが^^;(現在は修正パッチ公開済み)コレは見事にはまったといいますかなんというか。ソフトウェアの内容としては 全てのダイアログを Hook して コントロールのテキスト置き換え なんですが、あ…

これが Microsoft クオリティ

あるディレクトリに kanaria.dll misya.dll manna.dll manna.dll__ //なんて、ファイルがあったとしましょう。このディレクトリに対して、FindFirstFile("*.dll"); で DLL を列挙しようと仕掛けてみると…… "manna.dll__" というファイルまで列挙されてしまう…

LoadImageでのOEMリソース読み込み時に待ち受けるワナ

LoadImage 関数で OEMリソースへのハンドルが取れる……らしいのですが、どうしてもNULLが返ってきてしまう。 適切に値を与えてるはずなのに………OEMリソースには共有っぽいから LR_SHARE フラグ立てないといけないのかな〜…なんて思ったら、ビンゴ。 というわけ…

C++ と WinAPI の組み合わせって

相性悪いよなぁ…と強く思う今日この頃。^^;例えば、文字列を扱うのに std::basic_string<TCHAR> を利用したとします。で、Win32API で「文字列へのポインタ」と「文字数」の2つの引数を含む関数 -- 例えば TextOut 等を呼び出すコードを描いてみるわけですよ。 </tchar>…

SetWindowsHookEx の調査

HookType として WH_SYSMSGFILTER をインストールして、ダイアログのメッセージをフックして遊んじゃおうぜ計画なのですが…前に SetWindowText したのに、WM_SETTEXT がフックプロシージャに飛んでこないよ!! なんて自体に遭遇しました。 んじゃー、何のメ…

SetWindowsHookEx に対抗

SetWindowsHookEx で hook についての実験をちょくちょくしています。とりあえず、入門者が 64bit OS の上で 32bit DLL を利用した HOOK の学習は、ヤヴァイような気がしてきたので ^^; 32bit マシン上で開発テストしてました。 まだいまいち挙動が判って…