Win32API質問箱 Build ..
405:デフォルトの名無しさん
07/05/27 14:23:49
熾烈な首位争いを繰り広げる、日本とハンガリー。
日本は現在ハンガリーに500万クリックほど差をつけているものの、
これで安心してはいけない。
我々のこれまでの最大クリック速度は8万〜9万回/分が限度だが、
ハンガリーはなんと13万回/分を叩き出した実績がある。
実際、1400万の差を一晩でひっくり返されている。
今はハンガリー時間で7時を過ぎたところ。
彼らの動きが活発になり始めるころだ。
おまけに月曜日は祝日だという確定情報もある。
今の戦力では心もとない、まだまだ戦力を募集中だ。
もはやVIPPERだけでは太刀打ちできない。
これはもはや、VIPの枠を超え、2ch全体で立ち向かう以外に勝機はない。
諸君の参戦を切に願う。
現行スレ
【首位奪還】一番クリックした国が優勝 Click82【天王山の決戦!!】
スレリンク(news4vip板)
まとめサイト
URLリンク(www33.atwiki.jp)
406:デフォルトの名無しさん
07/05/27 14:49:49
>例えば赤と黒で画面に線を描画して、
>あとから赤の線だけを消して、赤の線の下に引かれている黒い線もちゃんと復元できるようなソフトなんですけども…
レイヤーのことだろうか?
407:デフォルトの名無しさん
07/05/27 16:23:17
この手のは、BitBltをパワーアップさせて、転送先や転送元に、
HDCだけじゃなくHWNDやHBITMAPも渡せるような
関数を作っておくと楽かな。
408:デフォルトの名無しさん
07/05/27 18:36:53
>>402
スレ違いの回答になるが・・・・
Undo/Redoをやりたいなら、ビットマップレベルで履歴を保存するより
描画内容(座標・色・線種など)で履歴を保存するほうがいいと思うよ。
409:デフォルトの名無しさん
07/05/27 18:42:42
質問です。F1を押したときにある動作をさせたいのですが、
ウィンドウプロシージャでWM_KEYDOWNでメッセージを受け取る事が出来ません。
起動した直後は出来るのですが、その後、エディットコントロールにフォーカスを移動した時とかに
メッセージを拾う事ができなくなります。エディットコントロールやボタンにフォーカスがある状態でも
メッセージを受け取るにはどうすればいいのでしょうか?
410:デフォルトの名無しさん
07/05/27 18:54:56
キー関係のメッセージははフォーカスを持つウィンドウに送られる
メッセージをDispatchする前に、アクセタレータを使うなり何なりすること。
411:デフォルトの名無しさん
07/05/27 18:56:55
ごめtypo
*アクセラレータ
TranslateAcceleratortとかHACCELとかのことです
412:デフォルトの名無しさん
07/05/27 19:56:41
HP見ながら頑張ってみたのですが、上手くいきません。
肝心な部分だけ書いてみました。どこかいけないところはあるでしょうか?
//aaa.rc
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
VK_F1, ID_MYHELP, VIRTKEY, NOINVERT
END
//resource.h
#define ID_MYHELP 40001
//aaa.cpp
WinMain(){
haccel = LoadAccelerators(hInstance, (LPCSTR)IDR_ACCELERATOR1);
}
WndProc(){
case WM_COMMAND:
if(LOWORD(wp)==ID_MYHELP) MessageBox();
return 0;
}
413:デフォルトの名無しさん
07/05/27 20:07:28
LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_ACCEL1)); とか
TranslateAccelerator(hwnd, hAccel, &msg) 抜けとかかなーといってみる
414:デフォルトの名無しさん
07/05/27 20:12:37
TranslateAcceleratorは?
あと、(LPCSTR)IDR_ACCELERATOR1よりもMAKEINTRESOURCE(IDR_ACCELERATOR1)
LOWORD(wp)よりもGET_WM_COMMAND_ID(wp, lp)お薦め
415:デフォルトの名無しさん
07/05/27 20:32:19
>>413-414
TranslateAccelerator()を入れたら動作しました!
大事なところを見逃してました。ありがとうございます。
416:名無し@沢村
07/05/27 20:39:52
>>404
>なんでビットマップを複数つくることを思いつかないんだ?
memBit1=CreateCompatibleBitmap(hdc,x,y);
memBit2=CreateCompatibleBitmap(hdc,x,y);
のようにでしょうか?
表示用のデバイスは1つ(hdc)しかないので、ちょっと無理っぽい気が…
417:デフォルトの名無しさん
07/05/27 20:40:34
なんで見えない番号があるのかと思ったら
なつかしいな沢村
418:デフォルトの名無しさん
07/05/27 20:42:47
TranslateAcceleratorは>>411でわざわざ言ってあげたのにな
419:名無し@沢村
07/05/27 20:47:02
>>408
描画内容(座標、線種、色)を数値データとしてスタックに保存するのでしょうか?
データを画面に復元するときはどうすれば?
思い付くのはSetPixcelですが、
SetPixcelで1点ずつ画面に点を打っていくのでは、時間がかかりすぎるような気が…
420:名無し@沢村
07/05/27 20:52:27
>>417
なつかしいな。
プログラミングは当分休止。つーかいまプログラミングしてるけど…
いま投稿用の漫画描くためのソフトつくろうと思って質問しまくっているとこ…
これができたら、プログラミングはお休みして漫画に専念する。
421:デフォルトの名無しさん
07/05/27 21:00:41
>>419
既にAPIの質問ではないと思うが
基本的な方法としては、
1、画像そのものを最初にどこかに保存しておいて
2、描画時に使ったコマンドの内容を保存しておく。 点を打った、線を引いた、円を描いたというようなね。
そして、巻き戻すときは、1から順にコマンドを再現して、一つ手前で止めればいい。
422:デフォルトの名無しさん
07/05/27 21:26:41
WM_CHARメッセージで、送られてきた文字を取得することは可能なのでしょうか?
423:デフォルトの名無しさん
07/05/27 21:29:18
>>422
お前が手の届く範囲にいたら殴りたい。
なんで訊く前にちょっと調べてみないわけ?
ほんの少し調べれば分かることなのに。
424:デフォルトの名無しさん
07/05/27 21:37:34
本人にとって、2chで聞く=調べる、なんだろうな
お前の手の届く範囲にはディスプレイがあるだろうから代わりにそれでも殴っとけ
425:デフォルトの名無しさん
07/05/27 21:52:49
いえ、質問の仕方が適当すぎました・・・。
WM_CHARのwpに入ってるっぽいのですが、その取り出し方がわかりません。
MessageBox()で表示させようと、(PTSTR)&wpにしても、文字コード取得しようとして(int)wpで見てみても
なんか全然変な値が入っててわけわかりません。
426:デフォルトの名無しさん
07/05/27 22:01:52
あのさあ、ちゃんと調べてんの?
ぐぐっただけで詳しい使い方なり情報なりわんさか出てくるんだが。
TranslateMessageはちゃんと読んでんよな?
だったらWPARAM型のwpにキャラクタコードが入ってるんだが。
ちなみにキーコードじゃないぞ
俺も殴りたくなってきた
427:デフォルトの名無しさん
07/05/27 22:02:22
殴るなら俺を殴れ
428:デフォルトの名無しさん
07/05/27 22:15:19
>>419
SaveDC, RestoreDCじゃダメか?
429:デフォルトの名無しさん
07/05/27 22:16:38
>>425
Cの文字の扱いをまるで理解していないと見た。
430:デフォルトの名無しさん
07/05/27 22:36:50
いえ、殴るなら僕を殴って下さい。それはそのはず、入ってるわけがありませんでした。
WM_COMMANDで拾ってそのパラメータからWM_CHARの処理やってたので、
そのままWM_CHARを捕まえたような気分になってました。
431:デフォルトの名無しさん
07/05/27 22:44:41
>>430
あんた誰だよ。>>425か?
名乗りもせずいきなり僕などという一人称使うな。殴るぞ
432:412
07/05/27 22:57:40
>>412-415
これでF1はどこにカーソルがあっても機能するようになったのですが、
F2、F3は機能しなくなりました。F2、F3等は、あるエディットコントロール内にカーソルが
ある時のみ有効にしたくて、F1だけ特殊な感じでした。これはF2、F3とかも
アクセラレータに持っていかれてしまってるせいなのでしょうか?
433:デフォルトの名無しさん
07/05/27 22:59:21
>>431
すみません、俺が悪かったです。もう名乗りません。
違う方法でなんとか解決できたのでなんとか出来ました。
434:デフォルトの名無しさん
07/05/27 23:25:20
>>433
だーかーら、名乗りもせず「俺が」なんて言うな、っていってんだよ
>>430です、くらい書けよ
誰だかわからんだろう
435:デフォルトの名無しさん
07/05/27 23:28:17
いえ、それは俺です。
436:デフォルトの名無しさん
07/05/27 23:29:05
>>434
俺だよ俺
437:デフォルトの名無しさん
07/05/27 23:34:17
だから俺が俺なんだって
勝手に人の名前騙るなよ
438:デフォルトの名無しさん
07/05/27 23:36:23
>>437
すまん、お前が俺か。
悪かった。
439:デフォルトの名無しさん
07/05/27 23:54:24
>>412
もしかして: WM_HELP
なんか、ID_MYHELPとか書いているし。
440:412
07/05/28 00:02:55
>>439
いえ、WM_HELPではありません。まぁ同じなんですけど、
F1ボタンを押したら自分で作ったヘルプのウィンドウが出るようにしています。
それはいいんですが、F2〜F8にもその他の機能を用意していて、
あるエディットコントロールをサブクラス化してそのプロシージャで
WM_KEYDOWNで拾っているのですが、それが機能しなくなりました。
F1だけをアクセラレータで変にやったせいなのでしょうか?
441:デフォルトの名無しさん
07/05/28 00:12:26
>>420
コミックスタジオでも買った方が良いぞ
あ、マンガ描くためのソフトから作ったのを作品の
ネタにするのなら恐れ入る
442:名無し@沢村
07/05/28 00:16:43
突然ですが、2つのメモリデバイスコンテキストを合成して描画することに成功しました。
黒い線の画面のほうをBitBltのSRCANDで画面にコピーし、
赤い線の画面のほうをSRCCOPYで画面にコピーしたら、
再描画をかけてもどっちの線も消えませんでした。
ただ、この方法だと、赤い線も黒くなってしまうようです…
赤い線が黒くならないようにするには、どうしたらいいのでしょう?
いくつも組み合わせがあるので、全部ためすのは、気が遠くなるほど時間がかかりそうなので…
443:デフォルトの名無しさん
07/05/28 00:20:18
組み合わせとは何の組み合わせ?
444:デフォルトの名無しさん
07/05/28 00:30:55
ねむい
445:デフォルトの名無しさん
07/05/28 00:58:48
質問です。
CでWindowsプログラム作るため、Win32APIを学ぼうと思っていろいろ調べている途中で気になったことがあります。
テンプレのWin32 API入門というサイトではWin32API学ぶ上で、
windowsの知識とアーキテクチャの知識が必須だと書かれていました。
そこで、「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
などの書籍でコンピュータアーキテクチャについて学んだ方がいいのでしょうか?
お金に余裕がないので無駄な出費は避けたいです。
ちなみに私は、基本情報技術者試験の知識とCの入門書の知識くらいしかもっていません。
御回答よろしくお願いします。
446:デフォルトの名無しさん
07/05/28 01:02:31
パソコン初心者でもなければ別に要らないと思う
447:デフォルトの名無しさん
07/05/28 01:02:50
いらん
448:デフォルトの名無しさん
07/05/28 01:03:19
その程度は、Win32APIを色々試しているうちに自ずと判ってくるから要らない。
449:445
07/05/28 01:09:36
>>446-448
御回答ありがとうございました。
ではこのままWin32APIの学習に入ろうと思います。
450:デフォルトの名無しさん
07/05/28 02:30:45
Windowsプログラムを作るためならば、APIから学ぶのは止めたほうがいい。
実際開発では窓とかはフレームワーク任せだからな。それで問題ない。
ど〜しても、変態的な非効率な開発を求めるならAPIから始めることを止めはしない。
451:デフォルトの名無しさん
07/05/28 02:59:11
>>449
>>450の意見と思いっきり逆のタイトルですまんが
APIで学ぶWindows徹底理解
URLリンク(www.amazon.co.jp)
この本はまじでおすすめ。
雑誌連載のムック化だから、それぞれのトピックは完全に独立してて
一つ一つ段階的に学習していく、って使い方はできない(想定されてない)けど、
それぞれに読み応えがあるし、なにより文章がとても上手くて面白い。
内容はタイトルどおりで(「徹底」はちと言いすぎか)、
APIの使用例を通してWindowsの仕組みや叩き方が結構クリアに見えてくると思う
ただし、Cの基礎が分かっていることが条件。
あとソースはBCC用だがVCのことも全体に渡ってちゃんと配慮して書かれてる
まぁ服毒本として興味があればどうぞ
452:デフォルトの名無しさん
07/05/28 05:26:58
XPのタスクマネージャのプロセスタブと同じ様な働きをするプログラムを作ってます。
本物のタスクマネージャのプロセス一覧でユーザー名を有効にすると、
LOCAL_SERVICEやNETWORK_SERVICEといったユーザー名の
プロセスが表示されますが、これらのプロセスをOpenProcessTokenで
開こうとするとGetLastError() == 5のアクセス違反でを取得できません。
ログインユーザーやSYSTEMのプロセスなら成功するのですが、
こういった****_SERVICEのプロセスからユーザー名を取得する
方法がありましたら教えてください。
Web検索しても成功してる人の記事が見つかりませんでした。
ぶっちゃけ下の人と同じ事をしたいのですが、
リンク先の回答者が教えているcodeprojectの方法では
取得する事はできない様です。
URLリンク(rararahp.cool.ne.jp)
453:デフォルトの名無しさん
07/05/28 06:03:28
すいません、アクセス違反じゃなくて、
GetLastError() 5 「アクセスが拒否されました。」
ってエラーです。
454:デフォルトの名無しさん
07/05/28 06:31:58
開き方が悪い
455:デフォルトの名無しさん
07/05/28 08:08:45
最低限必要なところのAPIくらい理解しとかんと問題が起きたときにどうにもならん
456:デフォルトの名無しさん
07/05/28 08:14:01
>>442
そうか?
小さいBMPを2つ作って、
組み合わせをプレビューをすればいいんじゃない?
Photoshopとかあれば、もっと容易だけど
457:デフォルトの名無しさん
07/05/28 08:44:38
>>453
偽装しておけ
458:デフォルトの名無しさん
07/05/28 10:08:22
ツールバーのアイコンに指定する背景色のカラーコードって何を指定すると透過になるんですか?
459:デフォルトの名無しさん
07/05/28 10:10:09
イメージリストを作るときのフラグによって異なる
460:445
07/05/28 10:59:14
いろんな回答がでて、よく分からなくなってきました。
最終的にDirectX使いたいという場合はどうなのでしょう?
461:デフォルトの名無しさん
07/05/28 11:04:22
DirectXとWin32API はあんまり関係ない。
API直接やDirectX直接を身に付けたいなら 参考書を買ってDelphiでやるという手がある。
API/DirectXの参考書はC/C++で書かれているから、これをC/C++のままコピペしたら
動くのは当然だけど勉強には、あんまりならん。
Delphiに直しながらやれば結構勉強になる。
462:デフォルトの名無しさん
07/05/28 11:17:27
>>460
DirectX 入門
>>461
Delphiはマジ死亡しているんで知らないなら覚えるだけ無駄。
移植の問題ありまくりなのに素人に、わざわざ複雑な方法を提案してどうする馬鹿か?
463:デフォルトの名無しさん
07/05/28 11:18:25
>>461
Delphiの布教乙
464:デフォルトの名無しさん
07/05/28 11:22:02
>>462
WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
トータルで速い方法を説明してるだけ。
DelphiのVCLはWin32APIの非常に素直なラッパで、VCLを理解すればAPIの作法も理解出来るからね。
MFCでやるよりはずっといい。
465:デフォルトの名無しさん
07/05/28 11:22:39
DirectX はコピペだけでもやること多いのに、さらに言語移植て…
466:デフォルトの名無しさん
07/05/28 11:23:33
>>464
ラッパライブラリから API を学ぶのは違うようなキガス
467:デフォルトの名無しさん
07/05/28 11:25:31
DirectXをやるのにDelphiを勧めるぐらいならC++Builderにしろよ
468:デフォルトの名無しさん
07/05/28 11:26:14
APIって学ぶものなの?
こんなんあったよな〜ってMSDN漁って
挙動とか注意点とか調べて使うだけじゃない?
469:デフォルトの名無しさん
07/05/28 11:28:00
>>468
最初の作法とイベント駆動まわり、MSDNの見方だけは 慣れとく必要がないかな?
470:デフォルトの名無しさん
07/05/28 11:37:09
>>464
>WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
同じじゃねーよ!
471:デフォルトの名無しさん
07/05/28 11:41:58
>>465
DirectXは COMで IDispatch も持ってるから、 Delphiからだと実はVBのようにもアクセス出来る
インターフェースを定義せずに、OLEVariantでアクセス出来るわけ。
ただし遅いけど挙動を見るお試しならまあ十分
472:デフォルトの名無しさん
07/05/28 11:44:46
>>460
Win32APIでWindowsプログラミングは激しく不向き。
窓一枚で100行とか書かされるからな(コピペですむにしても)。
ただDirectXアプリは窓一枚出せば枠組みはそれでおしまいだから十分いける。
言語に関してはWindowsでCが最適な分野というものはほぼ存在しない。
Cの学習が主眼でないならC++なんかの他の言語の方が後々効率がよい。
C++はCの知識の延長で使うだけでもだいぶ便利。
>「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
この辺は日本語学習における日本文化の知識みたいなもんでさしあたり不要。
最低限の説明はDirectXの本に載っている程度のもので十分。
473:デフォルトの名無しさん
07/05/28 12:34:07
>>471
サンプルやヘルプがC++を前提に書かれていて、
いちいち言語の違いを意識して書き直さなければならないので、
挙動を見るだけでも完全に不向き。
474:デフォルトの名無しさん
07/05/28 12:37:12
>>461は自分がやった方法が一番良いと思っている可哀想な子
475:デフォルトの名無しさん
07/05/28 13:02:54
>>473
質問者はC++じゃなくてCらしいから
->lpVtbl->ブフォァアな目にあうけどな
476:デフォルトの名無しさん
07/05/28 13:10:43
全く別の言語を扱うより遙かにマシ。
477:デフォルトの名無しさん
07/05/28 13:10:57
ぶふぉぁあ?
478:デフォルトの名無しさん
07/05/28 13:18:39
>>477
次のバージョンで追加されるメソッドです
たぶん
479:デフォルトの名無しさん
07/05/28 13:20:29
そうなのか、ダイレクトエッキスには日本語のメソッドがあるんだなたぶん
480:デフォルトの名無しさん
07/05/28 13:53:17
COMの話だろ
481:デフォルトの名無しさん
07/05/28 14:31:16
昔は、Delphiから CreateOleObject('CLSID_DirectInput') とか出来たけど DirectX8から出来なくなった
482:445
07/05/28 15:23:03
ではアーキテクチャについては放置し、C++の方が楽みたいなのでそちらも覚えながら、
C++でDirectX使えることを目標にします
483:デフォルトの名無しさん
07/05/28 15:27:18
DirectXならDirectXだけの世界だから大丈夫 Win32もとなると大変だけどね。
なお、言語の複雑さは C++ >>> Delphi/C#/VB > C だから覚悟はしておいてね
484:デフォルトの名無しさん
07/05/28 15:46:39
C#って結構難しいよ
485:デフォルトの名無しさん
07/05/28 16:15:54
>>483
>言語の複雑さは C++ >>> Delphi/C#/VB > C
C++の全てを理解しようとすればそうかもしれんが、DirectX/MFC等を使うのに必要最低限の知識でいいなら、
Cを(本当に)知ってる人なら3日もあればOKでしょう。
486:デフォルトの名無しさん
07/05/28 16:21:02
言語論争ウゼェ
487:デフォルトの名無しさん
07/05/28 16:33:10
>>445君へ
まずは、君が言うとこのDirectXの大海に向かって漕ぎ出せばいいんじゃね?
悩んだら、CやSDKの掟みたいなものをクレクレで聞くんじゃなく、
自分なりの解答を得たうえでをここの荒くれどもに問い合わせればいいんじゃない?
(そこそこ罵声はあるけどビビらないで)
んで、気が付きゃ、君も荒くれどもの一員
488:デフォルトの名無しさん
07/05/28 16:37:47
>>486 素のAPIに触ろうなんて貴重な人材を自分の陣営に入れたくて必死なんだろ。 許してやれよ
489:デフォルトの名無しさん
07/05/28 19:16:09
ウィンドウの中にタブコントロールを作成し、それにアイテムを
1つだけ挿入するプログラムを書いたのですがうまくいきません。
以下のコードはメインウィンドウのウィンドウプロシージャが
WM_CREATEを受け取ったときに実行されるOnCreate関数です。
これを実行すると、ウィンドウの中に 250×150のサイズの立体的な
ダイアログ色の長方形が表示されますが、その長方形にタブは付いていません。
また、タブコントロールに挿入されているアイテムの数を表示するメッセージ
ボックスは "n=0"と表示します。なぜでしょうか?
1. throwは実行されない ⇒ タブコントロールの作成は成功している。
2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。
490:デフォルトの名無しさん
07/05/28 19:17:26
void OnCreate(HWND hParent)
{
InitCommonControls();
HWND hTab = CreateWindow(WC_TABCONTROL,
"",
WS_CHILD | WS_VISIBLE,
0, 0, 250, 150,
hParent, (HMENU)123,
(HINSTANCE)GetWindowLong(hParent, GWL_HINSTANCE), 0);
if (!hTab) throw;
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "hello";
if (TabCtrl_SetItem(hTab, 0, &item) == -1)
MessageBox(0, "挿入失敗", "", MB_OK);
// 挿入されたかどうかチェック
int n = TabCtrl_GetItemCount(hTab);
char buf[1024];
wsprintf(buf, "n=%d", n);
MessageBox(0, buf, "", MB_OK);
}
491:デフォルトの名無しさん
07/05/28 19:23:24
エディットコントロールにWS_VSCROLLでついてくるスクロールバーについてですが、
このスクロールバーが一番下までスクロールされているかされていないかを判断するには
SetScrollInfo()とGetScrollInfo()を使わなければいけないのでしょうか?
なんかSetScrollInfo()で設定しても、元からあるスクロールバーのままで何も変わらず
いまいち使い方がよくわからなくて困ってます。これらを使わずに
一番下までスクロールされているかそうでないかを判断する方法はないでしょうか?
492:デフォルトの名無しさん
07/05/28 19:26:43
あります
493:デフォルトの名無しさん
07/05/28 19:43:45
で?
494:デフォルトの名無しさん
07/05/28 19:48:07
bool 型は便利だな
495:デフォルトの名無しさん
07/05/28 20:33:48
>>492
>>491の後半部分しか答えてないよ。
496:デフォルトの名無しさん
07/05/28 20:42:39
全部の質問に答えたとは誰も言っていない。
497:491
07/05/28 21:29:42
どのように判断すればいいのでしょうか?
498:デフォルトの名無しさん
07/05/28 21:38:57
::GetScrollPos
499:デフォルトの名無しさん
07/05/28 21:46:11
>>489-490
> (中略)
> 2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。
> (中略)
> if (TabCtrl_SetItem(hTab, 0, &item) == -1)
> MessageBox(0, "挿入失敗", "", MB_OK);
挿入のときはTabCtrl_InertItem(or TCM_INSERTITEM)。
あと、そこのSetItemは失敗してる。
にもかかわず"挿入失敗"のダイアログが出ないのは「== -1」にしているから。
ヘルプでSetItemの戻り値確認してみ。(InsertItemとの違いもな)
500:デフォルトの名無しさん
07/05/28 23:12:36
教えてください。
SetClipboardViewerで画像かどうかを識別するには何を使えばいいのでしょうか?
501:デフォルトの名無しさん
07/05/28 23:29:50
>>500
WM_DRAWCLIPBOARDでEnumClipboardFormats
502:500
07/05/28 23:35:32
>>501
ありがとうございます。やってみます。
503:デフォルトの名無しさん
07/05/29 00:02:42
自作アプリの起動時処理として、とある起動済みの(自作でない)アプリケーションのウィンドウハンドルを取得したいのですが
ウィンドウキャプションがしょっちゅう変わる上に
ウィンドウクラス名もATL:00xxxxxxといった名前でこれまたWindowsを再起動するたびに変わります
なので FindWindow では手が出ません。
どうやって取得したらいいでしょう?
現在は、起動時に「対象アプリケーションをクリックしてください」と表示して
SetCapture と WindowFromPoint の組み合わせでなんとか取得してますが自動化したいのです。
504:デフォルトの名無しさん
07/05/29 00:10:16
そのアプリの特徴を研究する。
505:デフォルトの名無しさん
07/05/29 00:23:09
子ウィンドウを列挙してそのパターンから判別ればよかろ。
506:デフォルトの名無しさん
07/05/29 00:31:55
プロセス列挙してモジュール名で判別なんてのも
507:503
07/05/29 00:59:45
>>504-506
506さんの方法でやってみます。
ありがとうございました。
508:デフォルトの名無しさん
07/05/29 02:03:14
>>503
FindWindowを使えばいいよ
509:デフォルトの名無しさん
07/05/29 05:31:25
>>503
アプリケーションの名前が判ってるなら、
GetWindowThreadProcessIdで指定の窓のpidを取得、
pidからOpenProcessでプロセスハンドル、
プロセスハンドルからEnumProcessModulesでモジュールハンドル、
GetModuleBaseNameでアプリケーション名を取得できる。
GetModuleFileNameExでフルパス名も取得できる。
以上を見つかるまでEnumWindowsで繰り返す。
EnumProcessesから辿る場合はどうすんのかな。
510:452
07/05/29 05:52:02
お願いします。
>>452
511:デフォルトの名無しさん
07/05/29 06:01:19
>>510
セキュリティソフトに蹴られたりしてね?
最近のセキュリティソフトはマルウェア対策でその手のアクセスを蹴る場合がある
512:デフォルトの名無しさん
07/05/29 06:12:48
あ、分かった
>>510
WTSEnumerateProcessesでプロセスのSIDが直接手に入る
OpenProcessTokenは必要ない
513:452
07/05/29 06:37:47
ありがとうございます。
SID取得できたんで解決しそうです。
514:489
07/05/29 06:39:32
>>499
ありがとうございます。
TabCtrl_InsertItemに変えるとうまくいきました。
515:452
07/05/29 07:06:24
NETWORK SERVICE、LOCAL SERVICE共に
無事LookupAccountSidで取得できました。
516:デフォルトの名無しさん
07/05/29 07:11:47
報告乙
517:デフォルトの名無しさん
07/05/29 07:20:17
なんか夜明けと共に明るい声が響いてくる
518:デフォルトの名無しさん
07/05/29 07:42:12
EnumWindows/EnumChildWindowsで見て特徴的な何かを探すかないんじゃないの
519:デフォルトの名無しさん
07/05/29 08:20:52
>>509
それをソースコードにするとどのようになりますか?
520:デフォルトの名無しさん
07/05/29 08:42:03
コンパイルすればプログラムになるだろ。
521:デフォルトの名無しさん
07/05/29 11:31:32
とにかく、ウィンドウタイトルもウィンドウクラスも変わるものに対して、
何を持って特定するのだろうか。EXEファイル名だって変えられるしな。
522:デフォルトの名無しさん
07/05/29 12:19:32
ファイル名が分かればファイルのチェックサムを算出できる。
523:デフォルトの名無しさん
07/05/29 12:31:16
>>503
なんか、ネトゲのチートツールかなにかを作ろうとしてるように見えるwww
524:デフォルトの名無しさん
07/05/29 12:56:08
ATL製ネトゲなんてあるのか・・・?
525:デフォルトの名無しさん
07/05/29 14:26:51
ふとした疑問なんだけど
Win32ファイバって一体どういう用途で使うと真価を発揮できるんだろ?
526:デフォルトの名無しさん
07/05/29 15:06:03
アセンブラが使えない言語でコルーチンを実装したい場合だろうな >>525
C++/Delphi はインラインアセンブラが使えるから自前でコールチンの実装が出来るから不要。
C#.NET VB.NET あたりの為に用意されたものだろう。
コルーチンは、get/put同士を接続するパイプとか
クライアント型で書かれたものをサーバ型に変換するといった場合に使う
527:デフォルトの名無しさん
07/05/29 15:07:04
フィボナッチ数列を求める
528:デフォルトの名無しさん
07/05/29 15:32:41
アニョハセヨー(SJIS)を
%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC
に変換するのってなんか手っ取り早いAPIあったら教えてください。
最終的には↓にしたいです。
URLリンク(www.google.co.jp)
529:デフォルトの名無しさん
07/05/29 15:46:06
MultiByteToWideChar と WideCharToMultiByte
530:529
07/05/29 15:50:08
具体的には、MultiByteToWideChar でSJISからunicodeにし、
WideCharToMultiByte で unicodeから UTF-8にする。
最後に、そのバイト列をsprintf とかで文字列にすればよかろう。
531:デフォルトの名無しさん
07/05/29 17:40:47
#define VOID void とか #define CONST const は、どういう意味があるんですか?
532:デフォルトの名無しさん
07/05/29 17:44:23
>>531
#define マクロで置き換えてるだけ。
データ型が大文字(DWORD, UINT)なんで、
大文字で揃えたかったんだけじゃね?
533:デフォルトの名無しさん
07/05/29 17:48:28
>>525
使い方によっては、デコード/エンコード、画像処理なんかでも
534:デフォルトの名無しさん
07/05/29 17:56:16
>>531
VOIDとかは違うが、
boolとかconstとかのキーワードはもともとのC言語には無いから、C++でもCでもtう
535:デフォルトの名無しさん
07/05/29 17:59:10
const は C でもあるぜ。
まあ、全て大文字の奴を使えば、どれもどの環境でも安心! という形にしたかったんだろう。
536:デフォルトの名無しさん
07/05/29 18:28:45
>>525
Unixからの移植に使えるとAdvanced Windowsには書いてあったような気がする
537:デフォルトの名無しさん
07/05/29 19:13:37
>>535
最近のANSI Cにはconstがあるが、これは比較的後になって追加されたもの。
もともと、というか少なくともK&Rにはconstはなかった。
538:デフォルトの名無しさん
07/05/29 19:18:44
K&R まで遡るのはアレだけど、
昔の ANSI C にすら無かったのか・・・。
539:デフォルトの名無しさん
07/05/29 19:23:12
少なくとも89年のANSI Cではあったな。
540:デフォルトの名無しさん
07/05/29 19:43:17
Windowsの開発が始まった頃には間違いなくあった。
541:デフォルトの名無しさん
07/05/29 21:10:54
>Windows 1.0が登場したのは1985年11月18日
542:デフォルトの名無しさん
07/05/29 21:26:47
>>538
gccじゃないUNIX用のコンパイラはものすごく古い仕様のままだったりするから
Win32の場合はconstが使えない可能性なんて考慮する必要すらないな
543:デフォルトの名無しさん
07/05/29 22:00:31
const char *とchar const *は違うそうです。
ということはconst char const *もあり?
それぞれどう違うのか説明おねg
544:デフォルトの名無しさん
07/05/29 22:03:52
const char * と char const * は同じだよ。
違うのは char * const 。
545:デフォルトの名無しさん
07/05/29 22:14:17
WinAPI関係ない
C++スレとかいきなされ あるいは本屋いって入門書でも立ち読みしとけ
546:デフォルトの名無しさん
07/05/29 22:22:54
>>545
この手のは意外と書籍じゃわかりやすく解説されていない気がする。
547:デフォルトの名無しさん
07/05/29 22:25:26
>>546
どっちにしろスレ違い。
548:デフォルトの名無しさん
07/05/29 22:29:45
CONSTとconstに関連して,コーディングスタイルについて質問です。
Windowsプログラミングで自分で関数やクラスをつくるときに,
(1)BOOL, UINT, CONSTなどのWin32用にtypedefされたものを使う
(2)bool, unsigned int, constなどのC++予約語を使う
どっちが一般的なのでしょうか?
549:デフォルトの名無しさん
07/05/29 22:32:28
C++のboolとBOOLは違うんだぜ
550:デフォルトの名無しさん
07/05/29 22:37:31
どう違うんだぜ?
551:デフォルトの名無しさん
07/05/29 22:37:51
>>549
そもそもC++にはBOOLなんて型はない
552:デフォルトの名無しさん
07/05/29 22:39:42
>>550
普通にWindows.hをインクルードしていれば、BOOLはintにtypedefされる
553:デフォルトの名無しさん
07/05/29 22:46:55
>>548
SDK,APIの結果を保証するなら、BOOL。
論理で判断するならbool。
という風に使い分ける。
単にintといっても不確定要素をはらんでる。
554:デフォルトの名無しさん
07/05/29 23:38:13
おいら,BOOL のくせに 3 種類 ( >0, ==0, <0 ) の値を返してきて
それらをきちんと判別しないといけない API って
GetMessage() しか知らないんだけど,他にもあるんだっけ?
555:デフォルトの名無しさん
07/05/29 23:53:25
だってBOOTはtypedef int BOOL;だし‥‥
bool型とは違うのだよ。
556:デフォルトの名無しさん
07/05/30 00:10:56
BOOL/boolはほかが言っているとおりなんで、残りのやつについて俺の場合
CONSTは使わず、常にconst
UINTはunsignedより文字数少ないから場合によって使う
557:デフォルトの名無しさん
07/05/30 00:37:32
>>555
BOOT?
>>552
558:デフォルトの名無しさん
07/05/30 00:40:54
>>557
BOOTSを語れゴラァ part2
スレリンク(tech板)
559:デフォルトの名無しさん
07/05/30 00:44:31
>>558
ちっ、先に張られたか。
560:デフォルトの名無しさん
07/05/30 02:42:33
つーかBOOLもBOOTSもどーでもいいからお前らWin32APIの質問しろよ
561:デフォルトの名無しさん
07/05/30 02:49:46
>>554
あれヒドいよなw
なら戻り値の型 BOOL にすんなと。
562:デフォルトの名無しさん
07/05/30 02:50:05
>>560
BOOLはWin32APIの話だろうが。
563:デフォルトの名無しさん
07/05/30 03:20:10
>>562
BOOLはwindef.hで定義されている単なるtypedefであり、APIではありません。
564:デフォルトの名無しさん
07/05/30 04:24:21
>>563
型もAPIのうちですよ。
565:デフォルトの名無しさん
07/05/30 04:31:43
Vistaで新規に追加されたAPIのリストとかってどこかにありますか?
あれば教えていただきたいです
566:デフォルトの名無しさん
07/05/30 05:27:23
>>565
URLリンク(msdn2.microsoft.com)
567:デフォルトの名無しさん
07/05/30 05:53:39
>>566
うお、こんな体系化されたページあったのか
ありがとうございます
568:デフォルトの名無しさん
07/05/30 09:30:24
XPで追加されたAPI一度も使ったことないどころか一つも知らんかった・・・orz
569:デフォルトの名無しさん
07/05/30 10:03:53
記述漏れがあるけど参考程度にはなるな
570:デフォルトの名無しさん
07/05/30 14:51:46
>>554
WM_CTRCOLOR**の戻り値とか、そもそもDialogProcとか
まあx64ではBOOLが32bitのままだもんでDialogProcの戻り値はINT_PTRに変わったけどな
571:デフォルトの名無しさん
07/05/30 15:50:15
GetMessageもWin32化するときに戻り値の型をintへ変更すればよかったのに
572:デフォルトの名無しさん
07/05/30 16:23:46
質問です。
あるAPLから、フルスクリーンAPLのデバイスコンテキストを
取得したいのですが、どのようにしたら実装できますでしょうか?
573:デフォルトの名無しさん
07/05/30 16:39:17
GetDC(NULL)
574:デフォルトの名無しさん
07/05/30 16:46:21
APL(エーピーエル)は、コンピューターのプログラミング言語の一種で、
1957年のケネス・アイバーソンによる創案に基づいた独特の表記法を用いた、
対話型インタープリター言語である。とくに配列処理に優れる。
「APL」とは、『Aプログラミング言語』(A Programming Language)の略であるが、
言語の特性から時に『配列処理言語』(Array Processing Language)と言い換えられる。
575:デフォルトの名無しさん
07/05/30 16:55:20
これって、アルファベットの A を意味してるのか、
それとも冠詞の a を意味してるのか、
どっちなんだろ?
和訳は前者を採用してるみたいだけど、
訳の都合かもしれないし。
576:デフォルトの名無しさん
07/05/30 17:01:20
>>575
double meaningじゃないのかな。
と、適当なことを言ってみる。
577:デフォルトの名無しさん
07/05/30 18:00:53
ごめん素で分からんのだが、APLって何
578:デフォルトの名無しさん
07/05/30 18:06:57
APL知らんのか。言語だよ
キーボードが特殊だった。まあ普通のキーボードでなんとかなるが
579:デフォルトの名無しさん
07/05/30 18:07:50
APLって遅延評価を積極的に使った言語だったよね
16ビットの鈍足マシンで巨大な配列を使っても結構速く結果が出た
580:デフォルトの名無しさん
07/05/30 18:58:42
冠詞の a で始まる固有名詞は見たことない
581:デフォルトの名無しさん
07/05/30 19:14:17
>>580
>>574で見ているはずだ
582:デフォルトの名無しさん
07/05/30 21:25:35
ある Windows マシン上の動画ファイルを、
別の Windows マシンからストリーミング再生で表示したいです。
DirectShow + HTTP サーバーを使えば簡単にできそうですが、
動画ファイルを全部ダウンロードすることなく、
動画の特定の時刻からすぐにストリーミング再生することは可能でしょうか?
583:デフォルトの名無しさん
07/05/30 21:37:58
ネットワーク共有+プレイヤーで好きな位置にシーク
APIと全然関係ない
584:デフォルトの名無しさん
07/05/30 21:43:50
ネットワーク共有したくない場合は?
585:デフォルトの名無しさん
07/05/30 21:50:20
なにワガママ言ってるんだ?
586:ららら
07/05/30 21:51:34
ワガママじゃなくて、途中から再生できるようなプレーヤーを作りたいのら。
ネットワーク共有みたいな、面倒な設定はユーザーにさせたくないのら。
587:デフォルトの名無しさん
07/05/30 21:51:55
>>584
したくないというキモチをガマンする
588:ららら
07/05/30 21:52:20
ガマンできないのらー!
589:デフォルトの名無しさん
07/05/30 21:57:16
ユーザにわざわざデフォルトの機能以外を使わせて、サーバソフトを用意させるのか?
なんてワガママな奴だ。
590:ららら
07/05/30 22:02:42
ちがうのら!
動画ファイルはLAN内じゃなくて、インターネット上にあるのら。
サーバーはインターネット上のホストら!
591:デフォルトの名無しさん
07/05/30 22:07:51
インターネット上経由だろうがネットワーク共有できる。
ユーザに負担をかけたくないならUPnPにでもしておけ。
592:ららら
07/05/30 22:10:44
セキュリティは大丈夫なのか?
593:デフォルトの名無しさん
07/05/30 22:13:03
それはお前のコード次第
594:デフォルトの名無しさん
07/05/30 22:14:10
馬鹿が自作したソフトを外部公開するのは大丈夫なのか?
595:デフォルトの名無しさん
07/05/30 22:17:34
ストリーミングだろうがファイル共有だろうが
インデックスでも作らない限り
キャッシュ無しで指定時間からの動画再生開始は不可能だろ
596:ららら
07/05/30 22:17:56
わぅー・・・・
597:デフォルトの名無しさん
07/05/30 22:26:31
気持ち悪すぎワロタw
598:デフォルトの名無しさん
07/05/30 22:28:23
ゲームをバックグラウンドで操作したくて色々思考錯誤してます。
ウィンドウを指定してPostMessageでキーを送ったのですが
EnterやEscなどはちゃんと受け付けますバックグラウンドで動くのですが
LeftやDownはダメでした。要はカーソル移動が出来ないんです。
んでSPY++でLeftの入力時を調べてみたところ下記のようなものが出ました
WH_GETMESSAGE:[WM_KEYDOWN or WM_KEYFIRST,256], wParam:[0x00000025], lParam:[0x014b0001]
WH_GETMESSAGE:[UnKnown,1104], wParam:[0x00000025], lParam:[0x00000001]
WH_GETMESSAGE:[UnKnown,1105], wParam:[0x00000025], lParam:[0xc0000000]
WH_GETMESSAGE:[WM_KEYUP,257], wParam:[0x00000025], lParam:[0xc14b0001]
これをPostMessageで送るにはどのように記述すればよろしいでしょうか
またUnKnownの文字列は何をしてるのか教えてください
初心者な質問で申し訳ないですがよろしくおねがいします。
599:デフォルトの名無しさん
07/05/30 22:46:41
不正はやめましょう。
600:デフォルトの名無しさん
07/05/30 22:55:38
素直にUWSCで組みましょう
601:デフォルトの名無しさん
07/05/30 23:00:05
低スキルチーターがあらわれた!
602:デフォルトの名無しさん
07/05/30 23:02:55
じーんせいはワンツーパンティー
603:デフォルトの名無しさん
07/05/30 23:14:21
>>582
Windows Media Server 買ってら…
ってかマジレスするとストリーミングサーバとクライアント
を実装するってって話になっちゃうのだけれどそうなると
Win32API 1つ2つだけの話じゃすまないのでもはやスレ違い…
604:デフォルトの名無しさん
07/05/31 15:23:20
>>579
漏れの完璧で確かな記憶によれば、APL に遅延評価は無かったと思うよ。
605:デフォルトの名無しさん
07/05/31 15:26:42
>>582
実際にそういうソリューションあるわけだから、自前でコードを書いて
「出来ない」なんて返事はあり得ないよね。
すると「DirectShow + HTTP サーバーを使って簡単に」可能か、
という質問だと仮定すると、返事は「不可能」になります。
市販品のストリーミングシンク/ソースフィルタとかを買えば別だけど。
606:デフォルトの名無しさん
07/05/31 15:32:57 BE:139752689-2BP(222)
>>582
Server2003に標準で入ってるよ。
URLリンク(www.microsoft.com)
607:デフォルトの名無しさん
07/05/31 15:47:14
Windows Home Server機がAppleTV並みの値段とサイズで出るといいんだが
608:デフォルトの名無しさん
07/05/31 23:30:13
日本語版 Windows SDK だって
URLリンク(www.microsoft.com)
609:デフォルトの名無しさん
07/06/01 00:06:19
>>608
英語版の最新があれば十分だと思う。同じバージョンの日本語版っていうのであれば使おうと思うけどね。
610:デフォルトの名無しさん
07/06/01 00:27:56
>>608
どうみてもAPIまわりは日本語化されてない予感
611:デフォルトの名無しさん
07/06/01 01:00:04
サンプルプログラムのバグを報告してもなかなか修正されねぇよーって中の人が言ってたから、
日本語版では修正されてっかもね。
612:デフォルトの名無しさん
07/06/01 01:00:49
今まさに英語版入れた所なんだよな……。
.NET まわりのドキュメントの日本語化は欲しいところだが API まわりは英語で構わんし。
異言語版SDK の共存って可能なんすか?
613:デフォルトの名無しさん
07/06/01 06:05:41
>日本語版 Windows SDK をインストールする前に、英語版 Windows SDK をアンインストールしておく必要があります。
って書いてるよ
614:デフォルトの名無しさん
07/06/01 06:49:53
>>610
統合前のPlatform SDKも英語版しかなかったからねえ
615:デフォルトの名無しさん
07/06/01 07:26:12
>>613
あら。すんません読んでませんでした。
ならまあいいか別に英語版で
616:デフォルトの名無しさん
07/06/01 09:35:37
ドキュメントの一部が日本語なだけじゃないのか
昨日ダウンロード始めたまま寝てしまったが、、、
今夜入れてみるか、、、MSDN待てばいいだけだが。
617:デフォルトの名無しさん
07/06/01 16:25:42
Ctrl+Alt+Delを禁止するのに今までGINAを使ってたんだけど、Vistaになってどうしたらいいやら・・・
Credential Providerにも同じような機能は用意されてるんだろうか?
メソッド一覧を見た感じでは無さそう・・・
618:デフォルトの名無しさん
07/06/01 16:51:15
>>609
>同じバージョンの日本語版っていうのであれば使おうと思うけどね。
同じバージョンの日本語版なわけだけど、ホントに使おうと思う?
619:デフォルトの名無しさん
07/06/01 17:43:19
HTTPS通信にて証明書のエラーの時にダイアログを出したいのですが、証明書のエラーを取得できません。
(1)InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC)
or
InternetOpen(NULL, INTERNET_OPEN_TYPE_PROXY, proxy, NULL, INTERNET_FLAG_ASYNC);
(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
(3)HttpOpenRequest( Connect, Method, Object, HTTP_VER, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_SECURE, this )
(4)HttpSendRequest( OpenReq, Header, Header.GetLength(), str, str.GetLength());
(5)HttpQueryInfo( OpenReq, HTTP_QUERY_STATUS_CODE , Code, &Len, 0 );
(1)〜(5)は全てTRUE, (5)にてCodeが0となってしまいます
//その後InternetSetOption()でSECURITY_FLAGを設定し再度HttpSendRequest()するとCodeは200が来ます。
//SECURITY_FLAGを設定せずにHttpSendRequest()するとCodeは再度0が来ます。
URLリンク(support.microsoft.com) を見ると、
HttpSendRequest()の結果がFALSEになりERROR_INTERNET_INVALID_CAなどを取得できるとあるのですが・・・
どこが悪いのかお気づきの方お教え下さい。
620:デフォルトの名無しさん
07/06/01 18:31:06
>>619
>(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
Portはなぬ?
621:619
07/06/01 18:41:32
>>620
可変ですが現在は0x1bb(443)でやっております。
よろしくお願い致します。
622:デフォルトの名無しさん
07/06/01 18:55:46
>>621
開発環境と、想定IEはなぬ?
623:デフォルトの名無しさん
07/06/01 19:31:54
INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_UI | INTERNET_FLAG_KEEP_CONNECTION
624:デフォルトの名無しさん
07/06/01 22:48:55
>>618
注意 : 本リリースは、最初に公開された Windows Vista および .Net Framework 3.0対応の英語版 Windows SDK リリースを
ベースに開発されています。 また、その後リリースされた英語版Windows SDK Update for Vista には対応していませんが、
アップデートの主要内容である Visual Studio 2005 Service Pack 1 で提供されたVista の新しいセキュリティ機能
「Address Space Layout Randomization(ASLR)」に対応したコンパイラが含まれています。
って書いてあるな。SDKと完全に同じものではないみたいよ。
625:デフォルトの名無しさん
07/06/01 22:49:41
関連無いけどこっちもwininetの質問
httpQueryInfoを同じアプリケーション内で繰り返し呼ぶと、
abnormal tarminationとかいうエラーがでるようなのですが
原因となりえるものってどんなことがあるでしょうか?
補足:
いつもエラーするわけではなく、一日そのアプリを起動しっぱなしにしてると発生します。
HTTP_QUERY_DATE|HTTP_QUERY_FLAG_SYSTEMTIMEをフラグにして、
SYSTEMTIME変数のポインタを渡してます。
626:デフォルトの名無しさん
07/06/01 23:47:24
>>625
エスパーな俺が一言。
wininet系関数は直接の要因じゃない。
配列やアロケート、Open/Closeを良く調べてみ?
あと、HDDキツキツじゃね?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4978日前に更新/234 KB
担当:undef