[過去ログ] Win32API質問箱 Build127 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): 2021/12/09(木)21:32 ID:sYLpmj89(1/5) AAS
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( 外部リンク:msdn.microsoft.com )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
省12
922: 01/25(土)20:28 ID:sFzIAkAR(2/2) AAS
>>921
それぞれに対する評価を書き込むのも乙ですが
ここにコードの書き方で迷っている子羊がいるので、実際の書き方の一例でも見せてみるというのも一興ではありませんか?
923
(1): 01/25(土)21:29 ID:0Ai0sZJQ(2/4) AAS
iniを読む時は、
・セクション名は指定する
・キーを指定して対応する変数に代入する
・複数要素指定したい場合には、
 - キーの末尾に1,2,3,... とつけて見つからなくなるまで読む
 - 別のキーで個数を指定する
 - キーを一つにして値をカンマ区切りやスペース
省1
924: 01/25(土)21:33 ID:0Ai0sZJQ(3/4) AAS
読みたいキーが50個あるなら、
GetPrivateProfileString() か GetPrivateProfileInt() を
50回書けばいい。
ループとか考えずにベタで書いたほうがバグらない。
変数名書き換え忘れとかはよくあるけど。
1,2,3,...とかやるところはループで。
925
(1): 01/25(土)21:54 ID:HZDjTK1Q(1/2) AAS
APIのGet何某は1セクション1キーの読み書きの度にファイルオープンからやるから糞遅いよ
vbscriptからiniを読み書きしたい時があってその時は大した手間でもないし全部自作したよ
セクションを駆使すれば構造化できるしコメントも書けるから下手な外部データ構造よりも扱いやすいかもとその時は思った
926: 01/25(土)21:59 ID:/zAJo091(1) AAS
>>921
レジストリ―を忘れないであげてください・・・
927
(1): 01/25(土)21:59 ID:0Ai0sZJQ(4/4) AAS
クソ遅いの同意。
あと、
・=の左右のスペースを自動除去するとか、
・端に半角スペースを使いたい場合には""で囲うんだっけ? "を使いたい場合にはどうするんだ?
・値の32,768文字(バイト?)制限?
とか、いろいろ隠れ仕様があるのが地味にトラップ。
928: 01/25(土)22:25 ID:HZDjTK1Q(2/2) AAS
>>927
それらの疑問はAPIで読み書きしてみれば解消すると思うのだが
929: 01/26(日)00:20 ID:u6Mx5l7z(1) AAS
>>923
ありがとうございます。
末尾に数字をつけるとそのような読み方が可能なんですね、初耳です
というわけではなくあらかじめ振っておくということですか?
>>925
差し支えなければ考え方のヒントだけでも良いのでご教示いただけるとたすかるなーなんて
iniとは暫く付き合っていかないといけませんし
930: 01/26(日)07:56 ID:KCyxjQfb(1) AAS
ini使いたい君はWin32APIがどうたら以前の問題だからもっと勉強してから頑張れ
931: 01/26(日)10:18 ID:9SEpmwDH(1) AAS
C#で組むと簡単にかける
932: 01/26(日)12:24 ID:jIhwYj9H(1) AAS
現代に生きてるならまず生成AIの使い方を覚えろw
933: 01/26(日)12:36 ID:ZUklcVwb(1) AAS
STLにその手の機能あったかと
934: 01/26(日)21:20 ID:s+0AyHDZ(1) AAS
msgpackがいい
935
(1): 01/30(木)07:55 ID:QS068twT(1) AAS
Win32のiniは中身どうなってるかわからんからあんま使いたくない
データ取り出すために毎回iniのpath指定からするってことは毎回CreateFileでもしてるのか?と疑ってしまうしな
まあキャッシュされてる説が濃厚っぽいけど、であれば解放はいつされる?という疑問も浮かんで来てしまう
936: 01/30(木)09:05 ID:DmWvGvqx(1) AAS
毎回読んでるに決まってるだろ
937: 01/30(木)17:56 ID:SG35pUtO(1) AAS
win16時代からなんかモヤモヤする気持ち悪い部分だねw
938: 01/30(木)19:54 ID:5vkjgM/o(1) AAS
メモリなんてほとんど無かった時代からあるものだから、キャッシュなんてしてるわけないしな
939: 01/30(木)20:05 ID:s1Kp+8+0(1) AAS
VistaくらいからならOSのファイルキャッシュが勝手に働いてそう。
940: 01/31(金)01:11 ID:X03NMzGm(1) AAS
キャッシュなんかMS-DOSのsmartdriveあたりからあるだろ
無効にするとWindows3.1は遅かった記憶がある
941: 01/31(金)10:55 ID:T94pdG8Q(1) AAS
>>935
構文解析なんて一瞬で終わる
キャッシュはOSがリファレンスカウントで管理してるでしょ
ただしゼロになったからといって直ぐに解放する訳じゃないし、ゼロになる前に解放される場合もある
そこは空きメモリとの兼ね合いでOSが上手くやる
942: 01/31(金)12:27 ID:x+X7dknH(1) AAS
補足すると再起動後やスリープ復帰後に$MFTを舐める様なアプリを動かしておくとシステムキャッシュに載って
その後はHDDでもSSDと同様にディレクトリトラバーサルがマルチスレッドで高速化する(find/fd等)
(よくある専用ソフトを常駐させなくてよい)
943: 02/13(木)21:31 ID:YNJwxBZ/(1) AAS
メインウィンドウのウィンドウプロシージャをグローバルからクラスメンバに移したくて
一応表面的なエラーなどは出ずに起動したのですが問題ないのか不安です
断片的で分かりにくいかもですが以下で問題ないか教えていただけないでしょうか

wc.lpfnWndProc = DefWindowProc;

SetWindowSubclass( hwnd, SubProc, 1, reinterpret_cast< DWORD_PTR >( this ) );

static LRESULT CALLBACK SubProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData );

LRESULT CALLBACK MyWindow::SubProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData )
省8
944: 02/14(金)05:52 ID:NtB8MvkN(1) AAS
あかんやろな
945: 02/14(金)08:53 ID:JVeRBzRc(1/2) AAS
20年以上前にMFCみたいなラッピングクラス群を自前で作ってみたことあったけど
ウィンドウプロシージャのとこをどうやったかもう忘れてしまったな……
946
(1): 02/14(金)13:37 ID:7nMc146l(1) AAS
メソッドという事は、第一引数にthisが渡る必要がある。
コールバックプロシジャーの呼び出し側にその機能(thisを積む)は無い。

MFCはその部分マクロで展開していたね
947: 02/14(金)14:04 ID:hgqMYig2(1) AAS
Best method for storing this pointer for use in WndProcにMethod 1~6まで解説されてるわ

>>946
ATLだとMethod 5: Thunkだね
948: 02/14(金)19:58 ID:SfDwe3dq(1) AAS
俺がやったやり方書いてやろうとしたらNGワード言われてBBxまでされたわw
クソじゃんw
949: 02/14(金)21:57 ID:NGvcdz15(1) AAS
method 4のやり方だし行けるんじゃない?
自分はmethod 6のイマイチ泥臭い方法でやったよ
950: 02/14(金)22:08 ID:JVeRBzRc(2/2) AAS
一次受け用のstaticなプロシージャとクラスのメソッド
あとSetPropとSetWindowLong使ってやったな確か
951: 02/27(木)22:08 ID:fu+5GN+l(1) AAS
SetWindowSubclass
952: 02/28(金)06:34 ID:zvJYGrzx(1) AAS
今更w
953: 02/28(金)08:53 ID:9mi1Ij4k(1) AAS
俺がその手のことやった時はSetWindowSubclass無かったな
954: 02/28(金)17:04 ID:kF3VgEHE(1) AAS
次スレよろ
955: 03/04(火)10:30 ID:Zmr6bMX1(1) AAS
Win32はいつ廃止されるの?
956: 03/04(火)15:36 ID:oVaTb1OS(1) AAS
.netベースのWinFXが完成したら順次廃止していくらしい
957: 03/04(火)15:50 ID:9pYVhAvI(1) AAS
.NETベースだと2年で切り捨てられていくのか……
大変だなぁ
958: 03/04(火)17:51 ID:KMsa0y1P(1) AAS
Windows上の.NETがそもそもAPI呼んでるのにどうやって廃止するのw
959: 03/04(火)18:04 ID:FptLM07E(1) AAS
Win32APIを呼ばない.netになるんじゃね?
android版とかそうなってないの?
960: 03/05(水)06:08 ID:Za60iql9(1) AAS
WinFXて、.NET Framework 3.0の開発コードだが……
961: 03/05(水)08:44 ID:Ip/00ysh(1/2) AAS
そもそもWin32APIを捨てるとか、Windowsをイチから作り直さないと不可能だろ
962
(1): 03/05(水)12:33 ID:Nfyn65kt(1) AAS
着々と64bit化は進められてるぞ
今やレガシーアプリの為だけに32bit対応があるだけだからなぁ
963
(2): 03/05(水)12:35 ID:KHVGsvS8(1) AAS
昔あったPowerPC、ItaniumのWindowsにもWin32apiあるの?
964: 03/05(水)15:45 ID:Ip/00ysh(2/2) AAS
>>962
>>963
内部的なbitサイズの違いや呼称の差であって、Windows APIのインターフェースが変わってるわけじゃないぞ
965: 03/05(水)23:09 ID:mISoeUSf(1) AAS
>>963
なくてどうする
966: 03/05(水)23:21 ID:jH+Yt1tq(1) AAS
外部リンク:github.com
このwin32metadataプロジェクトでモダンな言語からも簡単に使えるようになった
あらゆる機能をWin32で公開してwin32metadataも更新すれば、色んな言語から直ぐ使えるようになる
なのでWin32を廃止する意味が無くなった
967
(3): 03/06(木)16:00 ID:WqcKZUUD(1) AAS
64bitのCのintとかlongって32bitなん?
64bitあるのはlonglongとsize_tだけ?
968: 03/06(木)16:04 ID:lKPjZULZ(1) AAS
どのCだよ……
969: 03/06(木)21:03 ID:dn1jj/ZV(1/2) AAS
>>967
一般的には 32bit 環境からの互換性のためにそうなってる
ただ言語仕様として それが規定されているわけではない
明示的に 64bit 整数を使いたいなら int64_t とかを使う
970: 03/06(木)21:11 ID:5M2pGTOx(1) AAS
LSI-C試食版
971: 03/06(木)21:23 ID:dn1jj/ZV(2/2) AAS
>>967
補足。ちなみに 64bit 環境で size_t や sizeof が 64bit unsigned になったのは
アドレス空間の伸長により 32bit 長を超える配列や構造体が (実用性はともかく) 定義出来るようになったから
972: 03/06(木)22:54 ID:W7TbcEiC(1) AAS
SHARCだとcharも32bit w
973: 03/06(木)23:24 ID:qGQPttTG(1) AAS
>>967
LLP64
long longとポインターが64bit
Windowsはこっち

LP64
longとlong longとポインターが64bit
Unix系はこっち
974: 03/07(金)03:26 ID:wZ5tdiFM(1) AAS
規格ではサイズの保証なんか全く無いからstdint.h使えって書こうとしたけどそういやWin32スレだった
975: 03/07(金)08:52 ID:0UyMFctv(1) AAS
なんでlongとintが同じなんだよって昔から思ってるけど、まぁ今更
976: 03/07(金)12:13 ID:P73h4RuN(1) AAS
int64_tはあるのにint32_tが無いのは何故
977: 03/07(金)12:50 ID:23ArObOh(1) AAS
stdint.h(20):
typedef int int32_t;
978: 警備員[Lv.4][新芽] 03/07(金)20:55 ID:fV6KGyZ9(1) AAS
前後にいろいろあるでしょ
ILP64ってのもあるし
979
(2): 03/08(土)20:22 ID:5qDoPn2l(1) AAS
ファイルからそのファイルのハンドル握ってるプロセスを特定する事って可能?
プロセスが握ってるハンドルを列挙していく事はntdll利用したら可能だからその方法で結果的に上記の目的は達成できるっちゃできるんだけど、逆方向から出来たほうが工程は減りそうだから可能なら教えてもらいたい
980: 03/08(土)21:37 ID:YZ/xAsrC(1) AAS
performance meter
981
(2): 03/12(水)22:20 ID:P3gXMYWX(1/2) AAS
>>979
自己レスだけど全排他ロックされたファイルもCreateFile(path, 0, 0, NULL, OPEN_EXISTING, FILE_READ_ATTRIBUTES, NULL);で開けるんだね
ハンドルさえ得られればNtQueryInformationFileのFILE_INFORMATION_CLASSで簡単にハンドル握ってるプロセス列挙出来た
982: 03/12(水)22:22 ID:P3gXMYWX(2/2) AAS
FILE_INFORMATION_CLASSじゃなくてFILE_INFORMATION_CLASS::FileProcessIdsUsingFileInformationで列挙できた
983
(3): 03/12(水)22:30 ID:s/+fNWEq(1/3) AAS
>>981
CWDがBのプロセスpが居てAフォルダをリネームや移動する場合はAのハンドルでpが分かるの?
/A/B/
984: 03/12(水)22:32 ID:s/+fNWEq(2/3) AAS
CWDでなくて
PWDね
985
(1): 03/12(水)22:36 ID:s/+fNWEq(3/3) AAS
Process Explorerで見る限りは、プロセスpのハンドル一覧にはAのハンドルは見えないけど...
986
(2): 03/13(木)07:40 ID:Wbt/WM1E(1/2) AAS
>>985
リネームや移動はハンドル握ってるタイミングが一瞬だから見えないだけでは?
作業フォルダってだけだとハンドルを握ってる訳ではないだろうし
987: 03/13(木)12:00 ID:q1HKk6WD(1) AAS
>>986
> 作業フォルダってだけだとハンドルを握ってる訳ではないだろうし
win32 API使ったプログラム書けるのだったら確認したら良いのに...
988
(3): 03/13(木)12:50 ID:fUgksTzw(1/3) AAS
>>983に言えよ
989: 03/13(木)13:15 ID:1bKyRJrk(1/3) AAS
>>988
急にどうした?雰囲気悪くするだけだぞ
990
(4): 03/13(木)13:19 ID:1bKyRJrk(2/3) AAS
そもそも979が質問はするけど人からの質問には答えないタイプに見えるからそこからだな、雰囲気改善は
991: 03/13(木)13:23 ID:1bKyRJrk(3/3) AAS
言った手前、横から答えて置くかな

>>979 FileTest.exeがよく使われている
>>983 その場合pはリストアップされない
>>986 作業フォルダはhandleとして握っている
>>988 一連の流れの誰ですか?
992: 03/13(木)13:40 ID:Wbt/WM1E(2/2) AAS
>>990
別にちゃんと答えてるけど?
で、確認してみたらProcessHackerではカレントディレクトリのハンドルは普通に見えるね
てか手順教えてるんだからツールに頼らずにそれこそ確認したい側が>>981をやってみたらいいと思うけど
993
(1): 990 03/13(木)14:39 ID:WtHN9N5n(1/2) AAS
ごめん、986の感じから981~983の流れが全く通ってないから981とは別人に見えた

確認したい側が手を動かすのは原則だけど、既に下準備が整っているのだからちょっとした便乗質問には答えてあげるのが助け合いの精神だな
もっとも986時点では作業フォルダを握っている前提で983を見てなかったからやむなしか

>>988は誰よ?
994: 990 03/13(木)14:41 ID:WtHN9N5n(2/2) AAS
>>983
フォルダを開く時はFILE_FLAG_BACKUP_SEMANTICSな
995: 03/13(木)15:58 ID:fUgksTzw(2/3) AAS
誰でもねぇよただのスレ見てるだけの人間だ
誰かじゃねぇと発言すらできねぇのかよ
つーかお前こそ誰だよw
996: 03/13(木)16:02 ID:fUgksTzw(3/3) AAS
ついでに次スレ建てといた

Win32API質問箱 Build128
2chスレ:tech
997: 990 03/13(木)16:08 ID:BLU3LOZR(1) AAS
>> ID:fUgksTzw
スレ立て乙
ただの荒らしだと思ったが見直したぞ
仲良く行こう
998: 03/13(木)18:44 ID:+BJ849hc(1) AAS
>>993
お前は誰なんだ
999: 03/13(木)19:05 ID:kIpNzUxV(1) AAS
だーれだ?
1000: 03/13(木)19:18 ID:biPGw+Hh(1) AAS
キチガイ
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1189日 21時間 45分 55秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
省7
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.220s*