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

Win32API質問箱 Build47

レス数が900を超えています。1000を超えると表示できなくなるよ。
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などの質問はそれぞれの言語や開発環境スレで
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
ある程度読んで実践できるにしては質問が漠然としてる。
0897デフォルトの名無しさん2006/12/12(火) 11:34:02
>>894
基礎はできてるみたいだから作りたいもの作れ
その都度MSDN等を参照しつつ覚えていけばいい
0898デフォルトの名無しさん2006/12/12(火) 11:38:04
たぶん本に書いてある範囲ならできるけど、自力では何も作れないタイプ
08998902006/12/12(火) 11:39:33
>>895
みたよ

Amazon見てたときは
Windows Server2003完全技術解説
インサイドMicrosoft Windows
Win32システムサービスプログラミング
とかをよもうとおもいましたがどんなもんでしょ

>>896
みんなどんなのよんでんのかなーとかいうレベルの質問ですよ

>>897
やっぱそうなりますよね
通勤長いんで(90分)本読むんですが、そのとき読みたいなーというかんじ

>>898
想像におまかせ
0900デフォルトの名無しさん2006/12/12(火) 12:10:15
>>899
批判じゃないけどなんか漠然としてるんだよね
俺も楽しい本探すことが半ば趣味だからこの手のレス書いてみたいともったことはあるし

でも>>892の言うとおりで、ある程度知識吸収すると、
もうテクニック的には適当なソース読むのぐらいしかないんだよね
で、WTLとかWineとかおもしれーぞ、と
始発で座れるならノートにソース落としておくと退屈しねーぞ、と
0901デフォルトの名無しさん2006/12/12(火) 12:53:09
通勤途中で見るとかなったら、後はアルゴリズム本とか開発系雑誌なんじゃね?
0902デフォルトの名無しさん2006/12/12(火) 15:48:25
Robbinsのデバッグ本
0903デフォルトの名無しさん2006/12/12(火) 16:37:53
>>898
俺...orz
0904デフォルトの名無しさん2006/12/12(火) 17:14:17
実践的なことができるようになったなら本はそろそろ卒業したら?
何か実用的なプログラムのソースコードを読むのはどうかな。
数百〜数千行がいいかな。
きっと本を読んだ程度じゃスッと理解できない事が出てくるよ。
本のサンプルには載らないようなテクニックとかも学べそうだし。
0905デフォルトの名無しさん2006/12/12(火) 18:00:10
基礎が終わったなら、コーディングスタイルとかの思想的な
部分の勉強もいいいけどスレ違いだな。
0906デフォルトの名無しさん2006/12/12(火) 18:45:29
>みんなどんなのよんでんのかなーとかいうレベルの質問ですよ
本は読まないよ。
本に載る程度の簡単な内容ならネット上にごろごろ解説サイトがあるし。
詳しさを求めるならMSDN読むし。
0907デフォルトの名無しさん2006/12/12(火) 18:46:17
>>900さんの見てふと思った。
このソースは読んどけ、みたいなお勧めはありますか?
0908デフォルトの名無しさん2006/12/12(火) 19:53:14
自分のレベルに合ったソースじゃないと意味がないし
何のためにプログラムを勉強するのかにもよる
目的すら無いならやめちまえ
0909デフォルトの名無しさん2006/12/12(火) 19:58:05
半年前の自分のソースを読むといいってのをスラドで見かけた。
0910デフォルトの名無しさん2006/12/12(火) 20:15:26
勉強中だと半年前の自分のソースって見てて恥ずかしくなるよね。
0911デフォルトの名無しさん2006/12/12(火) 20:39:02
勉強初めて3ヶ月余りの俺は(ry
0912デフォルトの名無しさん2006/12/12(火) 21:03:56
WinMainにシューティングゲームのソース1万行を全て書いていた俺
0913デフォルトの名無しさん2006/12/12(火) 21:33:12
目くそが鼻くそをばかにしててワロタ
0914デフォルトの名無しさん2006/12/13(水) 00:19:04
↑のどくそ
0915デフォルトの名無しさん2006/12/13(水) 01:14:41
>>912
俺と同じ事してる奴がいるとはwwwwwwwwww
引数付関数なんてほとんど作ってなかった俺wwwwwwwww
0916デフォルトの名無しさん2006/12/13(水) 08:30:44
>>912
メッセージの処理をどうやってたのか疑問
0917デフォルトの名無しさん2006/12/13(水) 08:43:39
>>916
自前でループ回して
GetAsyncKeyStateとか使ってたんじゃないのw
WM_CLOSE拾えないから少なくともクローズボックスは反応しないな。
09188902006/12/13(水) 08:52:35
>>891-917
なるほど。プログラミングWindowsやAdvancedWindowsみたいな入門書ではなく、
入門書の次に読むような本を期待していたんですがないんですね。
Windows、SDKとかの知識を深めようとおもったら、MSDN読み、人のソース読みしかなくなるっぽいので、
通勤にノートPCの導入を考えてみます。参考になりました。ありがとうございます。
0919デフォルトの名無しさん2006/12/13(水) 09:02:53
Advanced Windowsが入門書…?

>>918
もう知ってるとおもうけどMSDNは日本語でおkな文面が多いから読むには結構気合が居るぞ。
あとこれは個人的な意見でしかないから深く考えないで欲しいんだが
電車の中とかでノート開いてる人ってキモくないか…?
0920デフォルトの名無しさん2006/12/13(水) 09:13:58
>>919
ぁぁ、キモイとおもう。けど、知識はほしいから天秤にかけたら知識に成った。
すでにDELLに発注してしまった。自分のキモサが+1された。
0921デフォルトの名無しさん2006/12/13(水) 09:23:31
>919
あどばんすどういんどうずハにゅうもんしょデス
ほんとうニミタコトアリマスカ
かくしょうのタイトルをみてみましょう
0922デフォルトの名無しさん2006/12/13(水) 12:10:52
ttp://pc8.2ch.net/test/read.cgi/tech/1164376287/から誘導されてきました。

 SetWindowsHookExとWH_CALLWNDPROCを使ってよそのプロセスに送られるメッセージを
見ることができるようになったのですが、この方法だとメッセージを見るだけで変更することが出来ません。
 一部のメッセージ(WM_KILLFOCUS)が渡されることを阻止したいのですが、どうすればいいでしょうか?
0923デフォルトの名無しさん2006/12/13(水) 12:21:22
>>922
WH_CBTを使うとか
0924デフォルトの名無しさん2006/12/13(水) 12:55:46
WH_CBTはWM_KILLFOCUSを扱ってくれないんですよ。
0925デフォルトの名無しさん2006/12/13(水) 12:58:02
殺したいメッセージはWM_NULL二置換するとかいう方法もあるらしい
やったことないけど
0926デフォルトの名無しさん2006/12/13(水) 14:18:14
WH_CALLWNDPROCじゃメッセージ書き換えも破棄も無理だった気がする
WH_GETMESSAGEならできたと思うけど
0927デフォルトの名無しさん2006/12/13(水) 15:14:23
サービスからアプリケーションにメッセージを送るため、ウィンドウハンドルを
探したのですが見つかりません。どこにあるんでしょ・・・。(環境:Vista)
0928デフォルトの名無しさん2006/12/13(水) 16:18:03
どんなウィンドウをどうやって探してたのよ。
0929デフォルトの名無しさん2006/12/13(水) 16:20:38
ウィンドウハンドルがどこにあるのか、という疑問が出る時点で何かがおかしい気がする
レス数が900を超えています。1000を超えると表示できなくなるよ。