トップページ⇒tech
1001コメント290KB

Win32API質問箱 Build47

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/13(月) 08:56:12
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0797デフォルトの名無しさん2006/12/09(土) 01:09:12
つうか>>774はどのファイルシステム使ってるんだよ?
NTFSなのかFATなのかくらい書けよ。
0798デフォルトの名無しさん2006/12/09(土) 01:16:44
知ったかが答えられずに妙な突っかかり方してるようにしか見えんな
0799デフォルトの名無しさん2006/12/09(土) 01:39:48
例えば、_, a, B, c, D を並び替えた場合、文字コード順にやってしまうと、
B < D < _ < a < c と並び替えられる。

a より B が前に来るのは、直感的に分かりにくい。
そのためエクスプローラでは、いわゆる辞書順に並び替えるため、
おそらくアルファベット大文字を小文字に変換してからソートしている。

_, a, B, c, D
→ _, a, b, c, d
→ _ < a < b < c < d
→ _ < a < B < c < D

こうして、アンダーバーは先頭に持ってこられる。

全部予想だけど。
0800デフォルトの名無しさん2006/12/09(土) 01:50:29
全角のA、aも半角と入り混じって辞書順になるよ
言語の設定を日本語にしてるときだけかもしれんけど
0801デフォルトの名無しさん2006/12/09(土) 03:25:26
Zipフォルダを、エクスプローラだけじゃなくて
任意のアプリからフォルダのように見えるようにする事は無理なのでしょうか?
0802デフォルトの名無しさん2006/12/09(土) 05:40:17
エクスプローラで全角スペースで始まるファイル名より前に来るファイル名を探せ
0803デフォルトの名無しさん2006/12/09(土) 08:12:36
ファイル順がどうのと訳知り顔で囁いてる香具師らはまとめて>>775見ろ
0804デフォルトの名無しさん2006/12/09(土) 08:39:04
>>801
それはAPIの質問なのか?
そのアプリ作った奴に頼め
0805デフォルトの名無しさん2006/12/09(土) 08:43:41
おはようございます
0806デフォルトの名無しさん2006/12/09(土) 09:11:45
ExplorerとAPIは同じであるべきだ、という前提が間違っているとは考えないのかな
0807デフォルトの名無しさん2006/12/09(土) 09:36:30
>>803
英文を読めるような頭を持った人間なら、そもそもここまで話を引き伸ばせません。
0808デフォルトの名無しさん2006/12/09(土) 09:47:51
NTFS上のソート順は
! < 0 < A,a < _ < α < あ < ア < 亜 < A,a

Unicode順で、英字は大小の区別なし(大文字と見なす)、全角半角の区別あり、カタカナひらがなの区別あり
といった感じだな。

explorerは、英字は大小の区別なし(小文字と見なす)、全角半角の区別なし、カタカナひらがなの区別なし、
漢字はJISコード順って感じかな。
0809デフォルトの名無しさん2006/12/09(土) 09:56:13
>>807
本当に知らなくて恥ずかしかったんだろうな
0810デフォルトの名無しさん2006/12/09(土) 09:57:22
>>806-807
何故なのかが話題であって誰も同じであるべきとは言っていない事に気付け
0811kk2006/12/09(土) 10:37:43
GetDlgItemText()で文字列を取得できたと思ったのですが、
うまく取得できてなく、
取得した文字列をatoiでintで変換したときにエラーになります。
エディットボックスに何を入れても、PTSTRにはいるのは「・U駆Qテ・」となっています。
何が原因なのでしょうか。
0812デフォルトの名無しさん2006/12/09(土) 10:43:15
エクスプローラの順序でファイル名比較をするAPIがshlwapiか何かにあったはず
0813デフォルトの名無しさん2006/12/09(土) 10:59:50
URLDownloadToFile関数で
返り値が返されるタイミングというのは
ダウンロードが完了した時、接続に成功したときのどちらでしょうか?
0814デフォルトの名無しさん2006/12/09(土) 12:04:57
自分のプロセスがどのくらいメモリを使用しているか取得する API はありますか?
0815デフォルトの名無しさん2006/12/09(土) 12:05:34
ありますよ
0816デフォルトの名無しさん2006/12/09(土) 12:07:16
>>815
すいません。教えていただけると幸いです。
0817デフォルトの名無しさん2006/12/09(土) 12:28:14
PurosesuMemoriDorekurai( PUROSESUHANDORU ph );
0818デフォルトの名無しさん2006/12/09(土) 12:36:03
>>811
そもそも整数値を取るつもりなら始めからGetDlgItemIntを使ったらどうか。
0819デフォルトの名無しさん2006/12/09(土) 13:39:16
>>810
アンカーの間違いに気づけ
0820デフォルトの名無しさん2006/12/09(土) 18:04:38
Process Explorerみたいに他のプロセスの環境変数を取得するには
どのAPIをつかえばいいの?
0821デフォルトの名無しさん2006/12/09(土) 18:22:43
ツリー構造のデータを外部に保存したいんだけど、データが大きいんでINIファイルだと遅くなりそう・・・
というわけでXMLに保存しようかと思うんだけど.NET使わずにXMLにアクセスする手段はありますか?
MSXMLとかになるんでしょうか
0822デフォルトの名無しさん2006/12/09(土) 18:28:52
>>821
XMLのほうが遅くなるんじゃね?
0823デフォルトの名無しさん2006/12/09(土) 18:30:04
MSXMLは高機能で便利だけど遅いよ。
0824デフォルトの名無しさん2006/12/09(土) 18:44:15
iniファイルって64KBの制限があったような。
0825デフォルトの名無しさん2006/12/09(土) 18:45:55
ありがとう、じゃあINIファイルで一度やってみる
INIで木構造を維持するいい方法があったら教えてもらえると助かる
0826デフォルトの名無しさん2006/12/09(土) 18:57:12
そのぐらい自分で考えろよ
0827デフォルトの名無しさん2006/12/09(土) 19:01:31
分かった
0828デフォルトの名無しさん2006/12/09(土) 19:02:45
別に ini にせんでも、独自形式にして
タブの個数とかでやってみたら?
0829デフォルトの名無しさん2006/12/09(土) 19:34:57
車輪の再発明は馬鹿げているので今後ともiniファイルでいきます
どうもありがとうございました
0830デフォルトの名無しさん2006/12/09(土) 19:44:16
ファイルの拡張子がINIということ自体は問題ないけど
Get/WritePrivateProfile系APIでの読み書きしてるなら絶対遅いよ。
内部で1行ごとにOpen/Closeされてるだろうし..
0831デフォルトの名無しさん2006/12/09(土) 19:49:08
試してから言えや
0832デフォルトの名無しさん2006/12/09(土) 19:52:04
コーディング量が一番少ないのを薦めるよ
RUBY最強だけどね
0833デフォルトの名無しさん2006/12/09(土) 19:55:25
実行環境が問題無いならxmliteという手もある
0834デフォルトの名無しさん2006/12/09(土) 20:06:19
>>820
ちゃんとしたやり方 or もっとスマートなやり方があるかも知れんけど、
SetWindowsHook系のAPI使うなりなんなりして自前のDLLを調べたい
プロセスにロードさせてやればそのDLLから取得できるべ。
0835デフォルトの名無しさん2006/12/09(土) 20:08:18
>>816
GlobalMemoryStatus
0836デフォルトの名無しさん2006/12/09(土) 21:02:27
>>829
これは車輪の再発名なんていう問題じゃないだろ。

すべてのソートにバブルソートを用いるとか、
君がツリーで管理しているデータなんかをすべて、たんなる配列で管理するとか、そういうレベルだろうが。
0837デフォルトの名無しさん2006/12/09(土) 21:04:43
まぁ、スレ違いの質問するぐらいだから
その程度の知識しか無いんだろ。
0838デフォルトの名無しさん2006/12/09(土) 21:11:01
>>824
Delphi/BCBなら64KBの制限なくて早いよ('(゚∀゚∩
0839a2006/12/09(土) 22:28:52
既出かも知れないけど

Microsoft の Windows 開発者 Dave 氏による Windows NT カーネル
解説講義のビデオをストリーミング公開!
http://d.hatena.ne.jp/softether/20061209#p2
0840デフォルトの名無しさん2006/12/09(土) 23:21:26
俺にとっては既出じゃないからありがとうと言ってやる
0841デフォルトの名無しさん2006/12/10(日) 00:45:12
カトラーかと思ったら違うのね
0842デフォルトの名無しさん2006/12/10(日) 01:56:12
>>820
ちなみにProcess Explorerはドライバをロードしているので
自前でカーネル空間から情報収集していると思う。
08438012006/12/10(日) 03:13:03
そうじゃなくて・・・
SUBSTってコマンドとかありますよね。
仮想ドライブにアクセスすると
代わりに実際のフォルダをシステムが提供してくれるわけじゃないですか。
その場合任意のアプリが「だまされる」事になりますよね。
Windows、もしくはデバイスドライバなどの機能でそういった事ができないか、
という質問な訳です。
0844デフォルトの名無しさん2006/12/10(日) 04:28:34
たぶんできないから、ドライバ書くかAPIフック。
0845デフォルトの名無しさん2006/12/10(日) 05:15:25
APIフックじゃできない事が大杉。
0846デフォルトの名無しさん2006/12/10(日) 05:21:28
すなおにドライバ書いた方がよさげ。
ようこそカーネルモードの世界へ。
0847デフォルトの名無しさん 2006/12/10(日) 06:02:37
すいません、教えてください。
win32apiを使って、c言語での処理の仕方を一通り学びました。
で、c言語での処理をしていたら、メッセージが来た時にそこに
長々とした処理を書くしか無い(知識不足ですが)ように思うんですが
api関数をC++で独自でクラス化していく方法は有るんでしょうか。
mfcのヘッダーを見てたら、afx_msgが付いてる関数と#pragma comment(lib, "・・・")が目に付き
で、#pragma commentを見てると、libを#ifdef#undef等で詰め込んでるように
見えます。あとPASCAL形式が気になります。
ついで、afx_msgがmessageに送られるWM_・・・ととらえて良いんでしょうか
なぜ、このような質問をするかというと、単純にMFCがとっつきにくいというか
マクロ等で、フレームワークとその子ウィンドウ、ツールバー等が最初の設定時点で
作成されてしまい、順序としてはフレーム、ビュー(子ウィンドウ)←→ドキュメント
となってるのはわかりますが、マクロや関数が呼ばれていく順序が
Cなら、WinMainのHINCTANCEをグローバルで持っておき、WNDCLASSEXで
RegisterClassExで登録しウィンドウの生成でならまずNULL指定でオーナーとして存在させ・・・
と順に理解できるんですが、MFCだと、どうしても僕のレベルでは可読できません。
どなたか、このページなら参考になるとか、このオープンソースならわかりやすい
と言う物を教えていただけないでしょうか。
初心者の質問でもうしわけありませんが、どなたかお願いいたします。
0848デフォルトの名無しさん2006/12/10(日) 07:04:57
>>847
まず日本語を勉強しましょう。
言葉を理路整然と書き連ねる工夫をしましょう。
改行を不自然な位置で使用するのをやめましょう。
初心者である事は免罪符になりません。
0849デフォルトの名無しさん2006/12/10(日) 09:04:48
subst自体は単にDefineDosDeviceを呼んでいるだけ。
もちろん、それで801のやりたいZipをということはできないだろうが。

>>847
> 長々とした処理を書くしか無い
そんなことはない。処理毎に関数を書いて、全てのメッセージの処理を関数呼出だけにすれば、
それだけでウィンドウプロシージャはだいぶすっきりする。
というわけで、とりあえずメッセージクラッカはどうよ。
0850デフォルトの名無しさん2006/12/10(日) 09:48:54
>>843
いったんどっかの隠しディレクトリに物理的にファイルを展開しておいて
ファイルシステムフィルタドライバでパスをリダイレクトすればできる。
ネットワーク上のファイルをアクセスする時も同じような方法で処理されている。
0851デフォルトの名無しさん2006/12/10(日) 12:46:32
Windows2000だけどポップアップメニューが馬鹿過ぎる…
フォーカスを失っても閉じないことが結構あるんですが何で?
0852デフォルトの名無しさん2006/12/10(日) 12:49:31
>>851
タスクトレイの話?
だったら、WM_NULL
0853デフォルトの名無しさん2006/12/10(日) 13:06:34
> ネットワーク上のファイルをアクセスする時も同じような方法で処理されている。
それはオフラインファイルの場合だけじゃまいか
0854デフォルトの名無しさん2006/12/10(日) 14:24:34
>>853
自分で作ったもんでもなければクラックして動作確認したわけでもないから
違うかもしれんが、少なくとも俺はそう聞いている。なんでも、ネットワーク
上のものだからいつアクセスできなくなるかわかったもんじゃないし、
第一、ファイルI/Oがある度にネットワーク経由のアクセスしてたんじゃ
パフォーマンスが最悪になるとかで、ネットワーク上のファイルが開かれる
場合はとにかくいったんファイル全体をダウンロードしてしまうらしい。
0855デフォルトの名無しさん2006/12/10(日) 14:36:34
smbではそんな事してない。
0856デフォルトの名無しさん2006/12/10(日) 14:40:46
VB NETスレで聞いてみたのですが、.NETでの関数では無理なようなのでここで質問させてください
他のアプリケーションプログラムを起動させたりするのはSystem.Diagnostics.Processで可能らしいのですが入力ボックスに自動で入力したり、ボタンを押したりさせるような
関数とかってWIN32APIで準備されているのでしょうか?
0857デフォルトの名無しさん2006/12/10(日) 15:00:07
用意されてるよ
0858デフォルトの名無しさん2006/12/10(日) 15:27:36
>>857
サンクス856です
具体的な関数名を教えてもらえませんか
0859デフォルトの名無しさん2006/12/10(日) 15:53:51
SendMessage
0860デフォルトの名無しさん2006/12/10(日) 16:07:44
>>859
どうもありがとう。
0861デフォルトの名無しさん2006/12/10(日) 16:08:33
>>847
本ならMFCインターナル、ただしこれはもう古いかもしれない。
それかソース追う。ただし全部把握するのはかなり大変。

ドキュメントビューアーキテクチャーは最初はやめた
法がいいと思う。
0862デフォルトの名無しさん2006/12/10(日) 16:11:51
>>855
smbがそうなっているってだけで関係ねぇだろ。
ちなみにレドモンド帰りのヤツから聞いた話だ。
0863デフォルトの名無しさん2006/12/10(日) 16:20:45
smb以外のプロトコルでファイルアクセスですかwww

ちなみにレドモンド帰りの知人は何時頃どんな仕事をしていたのですか?
日本人は意外と少ないので知っている人かもしれませんね。
0864デフォルトの名無しさん2006/12/10(日) 17:11:39
>>863
アホか。プロトコルとしてのsmbの話してるんだったらそれこそ関係ねぇだろ。
クライアント内でファイルをどう扱うかの話なんだから。
MS内ではわりかし有名な人だったみたいだから、本当にドンピシャで誰かわかるかもしれんから教えない。
0865デフォルトの名無しさん2006/12/10(日) 17:22:26
画像に書かれている文字列をテキストデータとして取り出したいのですが
どうすればいいですか?
0866デフォルトの名無しさん2006/12/10(日) 17:26:40
入力作業のバイト君を雇うために募集広告を出す。
0867デフォルトの名無しさん2006/12/10(日) 17:28:24
今から院生になって10年ぐらい研究する。
0868デフォルトの名無しさん2006/12/10(日) 17:38:46
簡単には無理ってことか…
0869デフォルトの名無しさん2006/12/10(日) 17:50:59
プリントアウトしてからスキャナにかけてOCRで読み込む
0870デフォルトの名無しさん2006/12/10(日) 17:53:51
直接画像を OCR かけろw
0871デフォルトの名無しさん2006/12/10(日) 17:57:37
フリーのOCR APIって無いの?
0872デフォルトの名無しさん2006/12/10(日) 18:39:13
スレ違い
0873デフォルトの名無しさん2006/12/10(日) 18:50:24
>>864
> アホか。プロトコルとしてのsmbの話してるんだったらそれこそ関係ねぇだろ。
> クライアント内でファイルをどう扱うかの話なんだから。
だからオフラインファイルだけじゃまいかと言ってるのに

> なんでも、ネットワーク
> 上のものだからいつアクセスできなくなるかわかったもんじゃないし、
> 第一、ファイルI/Oがある度にネットワーク経由のアクセスしてたんじゃ
> パフォーマンスが最悪になるとかで、ネットワーク上のファイルが開かれる
> 場合はとにかくいったんファイル全体をダウンロードしてしまうらしい。
とかオフラインファイルの説明そのものだし。
0874デフォルトの名無しさん2006/12/10(日) 21:26:37
Cマガジンに続きWindowsDeveloperマガジンまで廃刊とは
もうだめだ
おしまいだ
しぬしかない
0875デフォルトの名無しさん2006/12/10(日) 21:41:33
WindowsDeveloperマガジンは1年で休刊だと思ったんだがなぁ。
なんでここまでもったのか分らん。
0876デフォルトの名無しさん2006/12/10(日) 21:46:28
そういえば開発系週刊誌とか皆何読んでたりする?
0877デフォルトの名無しさん2006/12/10(日) 22:10:40
開発系で週刊誌なんかあったか?
0878デフォルトの名無しさん2006/12/10(日) 23:13:10
>>864。
> アホか。プロトコルとしてのsmbの話してるんだったらそれこそ関係ねぇだろ。

どのプロトコルでアクセスするかによって処理が違うのですけど、ご存じない?
08798202006/12/11(月) 02:40:18
>>842
ありがとう。簡単にはできなさそうか…
0880デフォルトの名無しさん2006/12/11(月) 04:12:43
隠しAPIだった、APIを使っているとか聞いたことがあるけど。その資料どこだったか見つけられない・・・。
まあインジェクトしてプロセス情報取得でもいけるから、さほど難しくはないよね。
0881デフォルトの名無しさん2006/12/11(月) 17:29:38
マウスの位置は、GetCursorPosですよね?
マウスボタンの状態を得る方法はありませんか?
イベントハンドラを捕らえるしかないですか?
0882デフォルトの名無しさん2006/12/11(月) 17:34:30
あ、GetAsyncKeyState(VK_LBUTTON) でいいのか。
08837202006/12/11(月) 22:03:49
タスクバーの非表示はWS_EX_TOOLWINDOW を指定しできたのですが
ダイアログボックスをメインにするにはどうすればいいでしょうか?
”ファイル名を指定して実行”のウインドウみたいにタスクバーに表示されず
ダイアロボックスを表示させたいです。
0884デフォルトの名無しさん2006/12/11(月) 22:08:58
>>720に付いてるレスをよく見るんだ
08857202006/12/11(月) 22:43:14
モーダルダイアログではメインにできないですか?
0886デフォルトの名無しさん2006/12/11(月) 23:04:30
Win32プログラミングでペイントに近いソフトを作りたいのですが、
何かおススメの参考書はありますか?
とりあえずWin32APIオフィシャルリファレンス改訂3版グラフィック・GUI編は購入しました

具体的には以下のサイトにあるようなアプリケーションを作成したいと思ってます
http://www.cs.washington.edu/homes/yangli/research/sketchpoint/

0887デフォルトの名無しさん2006/12/11(月) 23:25:42
gimpとかオープンソースを参考にする と言おうと思ったけど
ペイントならMSDNのサンプルにあったような気がする
0888デフォルトの名無しさん2006/12/12(火) 03:33:13
マウスキャプチャって他のプロセスにはできないんですか?
0889デフォルトの名無しさん2006/12/12(火) 06:23:39
>>885
んなこたぁ無いから、黙って>>720に付いてるレスを全部見るんだ
0890デフォルトの名無しさん2006/12/12(火) 10:45:53
プログラミングWindows 上下
Advanced Windows
MSDNライブラリ
以外でWin32API、SDKプログラミングを学ぶ上で日本語なおすすめ良書教えてください。
0891デフォルトの名無しさん2006/12/12(火) 10:52:35
猫
0892デフォルトの名無しさん2006/12/12(火) 11:00:27
猫はWebで十分な気が。
てかプログラミングWindowsで何の不満が‥‥

あとはMFCやVCLのソースくらいじゃないか?日本語じゃないけど。
0893デフォルトの名無しさん2006/12/12(火) 11:00:30
>プログラミングWindows 上下
>Advanced Windows
>MSDNライブラリ
これだけやったらあとは自分で判断できるだろう
その本持て余すようだったら向いてないからあきらめた方がいい。
0894デフォルトの名無しさん2006/12/12(火) 11:09:06
>>892
猫シリーズも読みました
丁寧な本だとおもった

>>893
えらく厳しいですね
ほかになんかイイ本ないかなーとおもってきいてます
ある程度読んで実践できるようになったから
0895デフォルトの名無しさん2006/12/12(火) 11:18:58
>>890
このスレと過去スレ
0896デフォルトの名無しさん2006/12/12(火) 11:29:21
ある程度読んで実践できるにしては質問が漠然としてる。
■ このスレッドは過去ログ倉庫に格納されています