■過去ログ置き場に戻る■ 1- 前250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build30
751 名前:デフォルトの名無しさん :2005/04/23(土) 11:47:29
ニャー

752 名前:デフォルトの名無しさん :2005/04/23(土) 12:00:26
CreateDialogでダイアログを2つ作ったのですが、
メッセージループを回すと正常に回ってないようです
(片方しか反応しない)
うまくダイアログを2つ動かす方法をおしえてください!

753 名前:デフォルトの名無しさん :2005/04/23(土) 12:01:03
ソース出せ

754 名前:デフォルトの名無しさん :2005/04/23(土) 12:02:03
つ[ウスター]

755 名前:デフォルトの名無しさん :2005/04/23(土) 12:03:01
つ[ttp://www.source.co.jp/]

756 名前:デフォルトの名無しさん :2005/04/23(土) 12:06:26
IsDialogMessage(hWnd..)のhWndが静的変数で、
複数のモーダルダイアログが自分勝手にその変数を書き換えているとか?

757 名前:デフォルトの名無しさん :2005/04/23(土) 12:34:14
猫わかって恥ずかしいの?
なんか本出してからサイトはなかなか更新されないみたいだね


758 名前:デフォルトの名無しさん :2005/04/23(土) 12:45:15
すいません、エディットコントロールのスクロールバーのつまみをクリックした場合の
SB_THUMBTRACKでの処理はふつうにできるのですがクリックしないで
SendMessage(hwnd, WM_VSCROLL,(WPARAM)SB_THUMBTRACK, 0);
のようにするとつまみが一番上に来てしまいます。なぜでしょうか?教えてください

759 名前:デフォルトの名無しさん :2005/04/23(土) 12:57:10
>>758
つまみが一番上に来るように書いてあるからです。

760 名前:デフォルトの名無しさん :2005/04/23(土) 14:13:58
>>754-755
面白くないですよ。

>>757
猫わかって略し方が恥ずかしい。

761 名前:758 :2005/04/23(土) 14:42:19
原因がわかったのでもういいです

762 名前:デフォルトの名無しさん :2005/04/23(土) 15:05:12
>>761
そうそう。冷たい対応されるときは冷たくあしらってやれ!

763 名前:デフォルトの名無しさん :2005/04/23(土) 15:21:35
自分で0にしておいて、0になりましたって言われてもねぇ。

764 名前:デフォルトの名無しさん :2005/04/23(土) 15:46:38
>>763
頭大丈夫?わかってないんならでしゃばんなよ

765 名前:デフォルトの名無しさん :2005/04/23(土) 15:50:02
>>764
>>764

766 名前:デフォルトの名無しさん :2005/04/23(土) 15:51:10
>>765
>>765
>>765

767 名前:デフォルトの名無しさん :2005/04/23(土) 16:05:17
それをやるなら
>>766
>>764
で十分でしょ。わざわざ3つにする必要全然ないですけど。

768 名前:デフォルトの名無しさん :2005/04/23(土) 16:08:31
>>767
意味不明

>>759=>>763=>>765

769 名前:デフォルトの名無しさん :2005/04/23(土) 16:44:15
>>768
いや、全然意味は分かるけど?

770 名前:デフォルトの名無しさん :2005/04/23(土) 16:44:51
>>768
ギャハハ。途中から俺が割り込んだらすっかり混乱してやがるw

771 名前:デフォルトの名無しさん :2005/04/23(土) 16:47:12
なんだこの池沼は・・・

772 名前:デフォルトの名無しさん :2005/04/23(土) 16:57:00
>>771
>>768だろ?

773 名前:デフォルトの名無しさん :2005/04/23(土) 17:03:03
いつから池沼が湧くスレになったんだろここは・・・

774 名前:デフォルトの名無しさん :2005/04/23(土) 17:05:26
結局俺たちは、最後の最後まですれ違ったままになってしまった
その後、どういう偶然の結果か、回答者のいなくなったこのスレが巡り巡って俺の

775 名前:デフォルトの名無しさん :2005/04/23(土) 17:11:49
>>773
いつそうじゃなかったのか教えてくれよ。

776 名前:デフォルトの名無しさん :2005/04/23(土) 17:21:18
↓以下何も無かったかのように再開

777 名前:デフォルトの名無しさん :2005/04/23(土) 17:21:52
│    _、_
│  ヽ( ,_ノ`)ノ 残念 私のおいなりさんだ
│ へノ   /  
└→ ω ノ
       >

778 名前:デフォルトの名無しさん :2005/04/23(土) 18:47:47
>>737
何らかの操作を行うことでウィンドウを表示する可能性があるのなら(1)
表示させることが無ければ(2)

779 名前:デフォルトの名無しさん :2005/04/23(土) 19:38:58
急速にスレの質が上昇してまいりました

780 名前:デフォルトの名無しさん :2005/04/23(土) 20:41:49
だがそれがいい

781 名前:デフォルトの名無しさん :2005/04/23(土) 21:00:35
>>779
安心して。そんなことないから。

782 名前:デフォルトの名無しさん :2005/04/23(土) 22:04:04
そういえば、なぜ GetMessage( &msg, NULL, 0, 0 ) の
第二引数はいつも NULL なのですか?

783 名前:デフォルトの名無しさん :2005/04/23(土) 22:05:59
変えてみたら?

784 名前:デフォルトの名無しさん :2005/04/23(土) 22:08:53
というか、いつもじゃ無いし。

785 名前:デフォルトの名無しさん :2005/04/23(土) 22:46:14
>>782
hWnd メッセージの取得に使う(取得元)ウィンドウのハンドルを指定します。このウィンドウは、呼び出し側スレッドに所属していなければなりません。次の値には、特別な意味があります。
NULL:呼び出し側スレッドに所属する任意のウィンドウへ送信されたメッセージと、PostThreadMessage 関数を使って呼び出し側スレッドへポストされたスレッドメッセージを取得します。

http://www.microsoft.com/japan/msdn/library/ja/jpwinui/html/_win32_getmessage.asp?frame=true

786 名前:デフォルトの名無しさん :2005/04/23(土) 23:10:48
このようなサイトを見て頭が混乱したわけであります。じゃ、ウィンドウハンドル
をしていいのですね。
http://www.maa.spacetown.ne.jp/~fool/programer/memo/api32_memo.html
【つまり、GetMessageのhWndに真面目にウィンドウハンドルを入れると馬鹿を見る】

787 名前:デフォルトの名無しさん :2005/04/23(土) 23:22:48
世の中の大多数のWindowsソフトはGetDlgItem(無効なハンドル, 無効なID)やりまくりながら動いてる。
きちがいだ

788 名前:デフォルトの名無しさん :2005/04/24(日) 00:05:59
それで問題なく動いてしまうWindowsというOSは偉大だね!

789 名前:デフォルトの名無しさん :2005/04/24(日) 00:13:01
>>787みたいなことがあまりに普通に行われていることをMSは認識していて、
いろいろ策を講じている

790 名前:デフォルトの名無しさん :2005/04/24(日) 00:28:51
>787
ソースは?

791 名前:デフォルトの名無しさん :2005/04/24(日) 00:43:38
>>790
つ[ウスタ−]

792 名前:デフォルトの名無しさん :2005/04/24(日) 00:51:40
つ[濃口]

793 名前:デフォルトの名無しさん :2005/04/24(日) 00:53:18
3.1のころはそれで良く落ちてたんだよ
最近は不正なハンドル渡されたら無視してるけど
それだけでかなり安定するんだから不思議なもんだw

794 名前:デフォルトの名無しさん :2005/04/24(日) 03:50:24
専門書の初期の版で誤植や間違いがあるのはある程度は仕方がない。
ただ、正誤表をちゃんと出さないのは困る。
http://www.seshop.com/book/errata/
翔泳社は版ごとに整理して公開してる。

795 名前:737 :2005/04/24(日) 04:23:31
>>778
最近スレが過疎気味で心配でしたが、回答ありがとうございます。
あと、ウィンドウを表示する可能性がなくても、タスクトレイにアイコンを入れてる場合は(TaskbarCreatedを待つ関係で)基本的にはトップレベルウィンドウにしておく方が良いみたいですね。

796 名前:739 :2005/04/24(日) 07:45:32
>>741
うう、英語ですか・・頑張ります・・・
>パスワードクラッカーやBOTツール
それはもう超作りたいんですが・・・ゲームの改造です・・・すみません・・・orz

>>739
ですので、自分じゃないんです。他のブロックをいじろうと・・・

バカで申し訳ないですが、Windowsのメモリブロック管理構造?はどこでわかりますでしょうか・・・?(用語がわからない・・・)


797 名前:デフォルトの名無しさん :2005/04/24(日) 08:14:51
>>796
英語の文章は無視してコードだけを見るようにすれば何ともない。

798 名前:デフォルトの名無しさん :2005/04/24(日) 08:22:12
>>739
ゲームの改造なら
まず、ウィンドウを適当な方法でみっける→ウィンドウハンドルからPIDを得る→OpenProcess→WriteProcessMemoryでいんでね?

799 名前:デフォルトの名無しさん :2005/04/24(日) 09:22:16
>>798
出身どこ?「いんでね?」とか東京では誰も使いませんよ。

800 名前:デフォルトの名無しさん :2005/04/24(日) 09:32:12
>>799
俺使うよ。江戸っ子だけど。

801 名前:デフォルトの名無しさん :2005/04/24(日) 09:42:49
方言ではなくDQN言葉

802 名前:デフォルトの名無しさん :2005/04/24(日) 09:44:27
DQN言葉でもなんでも【いんでね】?

803 名前:デフォルトの名無しさん :2005/04/24(日) 09:47:22
漏れは江戸っ子じゃない東京もんだけど、いんでね?

804 名前:デフォルトの名無しさん :2005/04/24(日) 11:00:20
いんどね

805 名前:デフォルトの名無しさん :2005/04/24(日) 11:05:57
ダメでしょ

806 名前:デフォルトの名無しさん :2005/04/24(日) 11:06:16
去ぬ

807 名前:デフォルトの名無しさん :2005/04/24(日) 11:58:09
マウスメッセージやキーボードメッセージを全部真下のウィンドウに渡して
まるでそのウィンドウが存在しないかのように振る舞う方法があったはずなのですが
忘れてしまいました

リージョンは切りたくないです
やりたいことは半透明で最前面表示だけど、じゃまにはならないウィンドウを作ることです

808 名前:デフォルトの名無しさん :2005/04/24(日) 12:02:24
>>807
へー、面白いね。俺は分からないけどもし解決したら
教えて。

809 名前:デフォルトの名無しさん :2005/04/24(日) 12:04:43
忘れちまった悲しみよ

810 名前:807 :2005/04/24(日) 12:15:24
どっかで見た覚えがあるんですが・・・
でもWindowFromPointとかで処理されるとおかしくなりそうだし、無理なのかな

811 名前:デフォルトの名無しさん :2005/04/24(日) 12:17:28
あーやったことあるんだけど・・・俺もわすれた・・・。
それこそ忘れるほどたいしたこと無い方法で出来たはずなんだけど・・・。
俺がやったときはキーボードまで透過できたかはわからないけど、
マウスイベントは透過してた。

812 名前:デフォルトの名無しさん :2005/04/24(日) 12:22:26
お前ら過去に書いたプログラムとかどう管理してんの?

813 名前:デフォルトの名無しさん :2005/04/24(日) 12:36:48
開発成果物はドキュメントも併せて全てVSSにぶっこんであるけど、
ただぶっこんであるだけ。ただの仕事の保険みたいなもん。
VSS使用以前の物についてはVSS入手後ぶち込んだ。

ツール系や自分用のナレッジのような物は管理してない。
むしろこっちが大事だろうからやらねばと思いつつ、早十ウン年。

814 名前:デフォルトの名無しさん :2005/04/24(日) 12:48:25
>>807
WS_EX_TRANSPARENT?

815 名前:デフォルトの名無しさん :2005/04/24(日) 12:54:04
>>799
東京人が使う言葉しか書いたらいけないという決まりでもあるの?

816 名前:デフォルトの名無しさん :2005/04/24(日) 13:00:40
>>799
こんにちは、東京都小笠原村沖ノ鳥島の人

817 名前:デフォルトの名無しさん :2005/04/24(日) 13:20:59
>>815
あるよ

818 名前:デフォルトの名無しさん :2005/04/24(日) 13:34:51
>>812
これ。
http://www.tamasoft.co.jp/LightVM/index.html

819 名前:デフォルトの名無しさん :2005/04/24(日) 13:43:36
>>812
WinCVS

820 名前:デフォルトの名無しさん :2005/04/24(日) 13:48:22
WinCVSはなんかクソっぽい臭いがするんだが
Tk使ってるからか

821 名前:デフォルトの名無しさん :2005/04/24(日) 13:54:00
VSSでいいじゃん。

822 名前:デフォルトの名無しさん :2005/04/24(日) 14:01:55
CVSはバイナリファイルの扱いが糞だった気がする

823 名前:デフォルトの名無しさん :2005/04/24(日) 14:17:48
漏れはCVS使っているが、WinCVSは個人用には使っていない。
バイナリファイルの扱いは確かにダメだが、個人ではバイナリファイルを管理しないので無問題。

824 名前:デフォルトの名無しさん :2005/04/24(日) 14:44:21
>>818
これ、ダイアログのフォルダ追加の意味がよくわからん。
フォルダをドラッグで入れた場合は大丈夫なんだけど、
フォルダ参照で追加しようとするとかならず失敗する。
それ以外はまあお手軽でいいんじゃないかな。
CVSの面倒な部分が排除されてるよ。

CVSは管理が面倒。
多人数で回したりコマンドライン大好きっ子な奴以外は使う必要ないな。

825 名前:デフォルトの名無しさん :2005/04/24(日) 15:29:05
>>821
「じゃん」って何処の言葉?
俺の住んでるところではあまり使われないが。

826 名前:デフォルトの名無しさん :2005/04/24(日) 15:32:22
>>825
名古屋に多い。

827 名前:デフォルトの名無しさん :2005/04/24(日) 15:43:58
じゃんは東京じゃん

828 名前:デフォルトの名無しさん :2005/04/24(日) 15:48:16
豆板じゃん

829 名前:デフォルトの名無しさん :2005/04/24(日) 16:00:21
はなわさん曰く神奈川らしいです

830 名前:デフォルトの名無しさん :2005/04/24(日) 16:30:24

               ,--─--. /ヽ ̄/
              /(ヽ) (イ)ヽ / ̄
             /ヽエエエエエメ
           /ヾ )。 | ,゚メ、
          (ニ] [ニ)'---回ン, ヽ_
             [ ̄ ̄]’ └─┘

           じゃんじゃじゃ〜ん

831 名前:デフォルトの名無しさん :2005/04/24(日) 16:52:53
急速にスレの質が低下してまいりました

832 名前:デフォルトの名無しさん :2005/04/24(日) 17:29:24
>>831
いや、いつもどおりでしょ

833 名前:デフォルトの名無しさん :2005/04/24(日) 19:39:43
ローカルフックとシステムフックってフックプロシージャをDLLにするだけの違い?
猫にかいてあるようにやってもできないぞ

834 名前:デフォルトの名無しさん :2005/04/24(日) 20:20:43
unsignedのデータ型の変数の文字列の長さを知りたいのですが
どうすればいいか教えてください。strlenで無理やりスタイルキャストしても正確に値が返りません


835 名前:デフォルトの名無しさん :2005/04/24(日) 20:28:03
>>834
C言語を勉強をし
さらに日本語を勉強してください。

私にはどちらが足りないのか判断しかねます。

836 名前:デフォルトの名無しさん :2005/04/24(日) 21:38:53
>>835
>>834の意味が分からないのには同感だけど、
あんたは分からないのになんで書き込むの?
放置以外ありえねーと思うんだけど。
おかげでオレのこんな無駄な書き込みが発生してしまい、
これに対して同様のツッコミも投稿されてしまうわけだ。

837 名前:デフォルトの名無しさん :2005/04/24(日) 21:44:20
>>834を俺が脳内補完解釈して回答。

WinAPIではそういう関数は存在しない。(俺の知る範囲では)
VCなら_scprintf()/_sctprintf()使え。

つうかこれ調べているときに初めてStrSafeの存在を知った。
DLLのことで悩む心配が要らないのは良いがBCCで使えないだろ。(ノД`)

838 名前:デフォルトの名無しさん :2005/04/24(日) 21:50:32
_scprintfなんてものがあったのかヨ

839 名前:デフォルトの名無しさん :2005/04/24(日) 21:57:41
>>837
うーん、言葉遣いがなってないですねぇ

840 名前:デフォルトの名無しさん :2005/04/24(日) 22:06:19
へえ、strsafe便利そうやん
platformsdk入れれば使えるみたいね

841 名前:834 :2005/04/24(日) 22:09:19
直接配列の要素数カウントして引数で渡したのでもういいです

842 名前:デフォルトの名無しさん :2005/04/24(日) 22:15:00
>>841
そういうことかよ。

843 名前:デフォルトの名無しさん :2005/04/24(日) 22:33:59
そういうことも糞も834みてふつうにわからない時点で低脳すぎ。このスレもうだめだな

844 名前:デフォルトの名無しさん :2005/04/24(日) 22:40:29
っていうかここ2ヶ月ぐらいでめちゃくちゃスレが低脳化してないか?
いきなり低脳の煽り入るし。なんかプログラム板とは思えないんだけど・・・

845 名前:デフォルトの名無しさん :2005/04/24(日) 22:41:55
低いかどうかじゃなく、834見てわかるようなやつは異脳だ

846 名前:デフォルトの名無しさん :2005/04/24(日) 22:42:29
春は仕方ないだろ。
新入生、新社会人、新厨房ときたもんだ。


847 名前:デフォルトの名無しさん :2005/04/24(日) 22:45:30
新入生と新厨房の違いは何?

848 名前:デフォルトの名無しさん :2005/04/24(日) 22:53:49
新厨房は、新入生及び新社会人の一部。


849 名前:デフォルトの名無しさん :2005/04/24(日) 23:24:08
なんで厨房はAPIスレにくるんだろ。JAVAとかVBスレにでもいきゃいいのによ

850 名前:デフォルトの名無しさん :2005/04/24(日) 23:25:49
>>849
厨房だから

851 名前:デフォルトの名無しさん :2005/04/24(日) 23:30:47
>>849
JavaとかVBを使ってないから

852 名前:デフォルトの名無しさん :2005/04/24(日) 23:36:04
一人の人間がずっと自演している予感

853 名前:デフォルトの名無しさん :2005/04/24(日) 23:47:00
みんな理解しようと言う努力が足り無すぎ
834を脳内補足して俺が完璧な回答を・・・

strlen(typeid(a).name());
普通にstrlenで出来るが板違い棚。API関係ねー。


854 名前:デフォルトの名無しさん :2005/04/24(日) 23:57:32
そこはあえてlstrlenでAPIの話にしてやるとか。

855 名前:デフォルトの名無しさん :2005/04/25(月) 00:46:11
>>852 自分のことかい?

856 名前:デフォルトの名無しさん :2005/04/25(月) 00:47:38
>>853
板違いですか・・・
どの板が適切なのでしょうか?

857 名前:デフォルトの名無しさん :2005/04/25(月) 03:54:48
OS板かな

858 名前:デフォルトの名無しさん :2005/04/25(月) 10:41:06
CreateWindow(Ex)で子ウィンドウ(ボタンなどコントロール類ではなく普通の窓)を作り、
これを不可視にして、
かつマウスイベントなどはきちんと受け取りたい
のですが、どうしたらよいでしょうか。

例えば親ウィンドウの色と同化させて擬似的に見えなくするとかは都合が悪いです。
それ以外の方法がありましたら教えて下さい。お願いします。

859 名前:デフォルトの名無しさん :2005/04/25(月) 12:19:36
>>858
レイヤード ウィンドウとか

860 名前:デフォルトの名無しさん :2005/04/25(月) 12:37:19
すいません、どなたかお願いいたします。

fh=CreateFile(szFn,GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL); // ファイルオープン

lpBuf=GlobalAlloc(GPTR,GetFileSize(fh,NULL)); // バッファ確保

ReadFile(fh,lpBuf,GetFileSize(fh,NULL),&dummy,NULL);

lpInfo=(LPBITMAPINFO)(lpBuf+sizeof(BITMAPFILEHEADER));

offset=*(LPDWORD)(lpBuf+10); // ビットマップまでのオフセット
lpBMP=lpBuf+offset; // ビットマップバッファのポインタ

CloseHandle(fh);

これでビットマップを二つ読み込んで重ねてマスク部分を透過させているのですが
横幅が奇数などになるとうまく透過させることができません。
重ね方は3バイト見ていって0xff 0x00 0xffだったら描画しないとしています。
4の倍数じゃないとうまく表示されないのはわかっているのでがうまくできないのです。

どなたかいいサイト、参考書、やり方などご教授お願いします;;

861 名前:デフォルトの名無しさん :2005/04/25(月) 12:50:16
4バイトアラインメント

862 名前:デフォルトの名無しさん :2005/04/25(月) 14:42:51
>>858
親ウィンドウにWS_CLIPCHILDRENを指定しないようにして、
子ウィンドウのhbrBackgroundをNULLにしとけばいいんじゃね?

>>860
BMPはスキャンラインごとにDWORD境界にアライメントされている。

863 名前:デフォルトの名無しさん :2005/04/25(月) 21:19:28
コールバック関数をクラスのメンバにするのに
staticにもせずSetPropやGetWindowLongなども使わずにやる方法ってありますか?

864 名前:デフォルトの名無しさん :2005/04/25(月) 21:25:17
>>863
ATLのようにサンク関数を生成する。
mov ecx, hoge
jmp hoge::callback
みたいなコードをhogeを埋め込んで生成するっていう手法。
やり方がわからない場合には、少し周辺知識とか勉強する必要がある。

865 名前:デフォルトの名無しさん :2005/04/25(月) 21:44:20
>>864
人の書いたコードを見てるんですが、
そんなむずかしいっぽいことはしてないみたいです。
基底クラスでなにごともなさげに普通にvirtualでコールバック関数を宣言して、
派生クラスで実装してるみたいなんですが、他に考えられることはあるでしょうか。

866 名前:デフォルトの名無しさん :2005/04/25(月) 21:46:09
なら、やっぱりどっかにstaticなサンク関数があるんでないの。
というか、WNDPROCがどうなってるかくらい検索かければ判るだろ。

867 名前:デフォルトの名無しさん :2005/04/25(月) 21:53:04
「だろ」もういい加減やめよう。

868 名前:デフォルトの名無しさん :2005/04/25(月) 21:54:05
なんでだろ

869 名前:デフォルトの名無しさん :2005/04/25(月) 22:12:29
CreateProcessでコンソールのプログラムを起動しています。
このプログラムは普通に(DOSプロンプト/コマンドプロンプトで)起動すれば
Ctrl+Cで終了することになっています。

このCtrl+Cの動作は起動元のプロセスからはどうやったらいいんでしょうか?

勘でパイプからEOF(\z)を流せばいけるかと思ったのですがそれは無理でした。

870 名前:デフォルトの名無しさん :2005/04/25(月) 22:23:46
GenerateConsoleCtrlEvent

871 名前:デフォルトの名無しさん :2005/04/25(月) 22:31:00
>>866
staticな関数自体一個も無いようなのですが。

872 名前:デフォルトの名無しさん :2005/04/25(月) 22:34:12
WNDPROCとして何渡してるかたしかめてみ

873 名前:デフォルトの名無しさん :2005/04/25(月) 22:37:55
別にクラスのstaticメソッドでなくても、C的な「関数」を
使ったスタブもあろうに。

874 名前:デフォルトの名無しさん :2005/04/25(月) 22:39:03
>>872
普通にウィンドウハンドルと、UINTでメッセージと、WPARAM、LPARAMを
引数に持っていますが、
そういう事じゃないですか?

875 名前:デフォルトの名無しさん :2005/04/25(月) 22:44:32
……WNDCLASSのメンバのpfnWndProcはどの関数だ、ってことだよ……

876 名前:デフォルトの名無しさん :2005/04/25(月) 22:48:48
staticなメンバ関数とそうでない関数がどう違うのか知ってれば普通に渡せるはずないってわかるのに‥‥

877 名前:865 :2005/04/25(月) 23:03:44
ものすごいアホな勘違いをしていたかもしれません。
ちょっとチェックをしてみます。結果がわかったら報告します。
とりあえず有難うございました。

878 名前:869 :2005/04/25(月) 23:06:58
>>870
いけるようです。サンクスです。

879 名前:デフォルトの名無しさん :2005/04/26(火) 00:44:46
>>799
どこん方言ば喋ろうが勝手たいね。別によかどが。

880 名前:デフォルトの名無しさん :2005/04/26(火) 01:51:01
CreateMutexと
if( GetLastError() == ERROR_ALREADY_EXISTS
の判断で2重起動を防止するときに、
関連付けた拡張子からのダブルクリック起動だと、
2重起動とみなしてくれないのですが、どうしてでしょうか?
(EXEを起動させたのと、拡張子をダブルクリック起動したのと共存してしまう)

おしえてください


881 名前:863,865,877 :2005/04/26(火) 05:59:43
報告します。
問題のコールバック関数は、本物のウィンドウと関連付けされているわけではなくて、
ただ単に普通の関数として定義されているだけで、
グローバルに定義されているメインウィンドウのコールバック関数のメッセージプロシージャから
普通の関数として呼ばれ、メッセージを丸投げされてるだけでした。

本物の子ウィンドウを作っているわけではなく、
メインウィンドウのメッセージをただ丸ごともらって、
それを自前で処理しているだけでした。

CALLBACKって付けただけでなんかOSから勝手に呼ばれるものかと思ってたんで(この辺の動きはよく理解してないのですが。)、
これが付いてる関数をクラスのメンバにしただけでコンパイルエラーになるのかと思ってたのですが、
特にウィンドウとも関連付けず、普通の関数と同じように定義し(ただCALLBACKと付けてみるだけ)
呼んでみたら普通に呼べました。

ただ、疑問なのは、じゃあなぜわざわざこのソースは「CALLBACK」とつけているのだろう?ということです。
普通の関数として動いてる(使ってる)だけみたいなので、付ける必要がないと思うのですが、
付けるのと付けないのでは何が違うのでしょうか?

882 名前:デフォルトの名無しさん :2005/04/26(火) 08:20:22
>>880
普通そんな挙動はしない。
そんだけの情報では回答は得られないと思う。

883 名前:デフォルトの名無しさん :2005/04/26(火) 08:24:00
>>881
> ただ、疑問なのは、じゃあなぜわざわざこのソースは
> 「CALLBACK」とつけているのだろう?ということです。

つれない答えで悪いが、ソース書いた人に訊けないのん?
オレはコピペしたか何かでたまたま付いちゃってるだけ
だと思うが。

884 名前:デフォルトの名無しさん :2005/04/26(火) 08:28:29
せっかくVCというIDEがあるんだから
CALLBACKの定義を検索すればよかったのに

885 名前:デフォルトの名無しさん :2005/04/26(火) 09:42:52
>>880
そんな裏技があるのかと思い、拡張子関連付けて試したが見事に防止された。
Mutex生成する位置が悪いのでは?


886 名前:デフォルトの名無しさん :2005/04/26(火) 09:48:42
GetCommandLine()で得た文字列でmutex生成してると予想

887 名前:デフォルトの名無しさん :2005/04/26(火) 09:50:07
.NET初心者ですが、質問があるのでよろしくお願いします。

目的:VB.NETでドットプリンタのトレイ番号を取得する。

状況:.NETのPrinterSettingクラスを使用してプリンタ情報を取得しようとしたが、
プリンタ固有となるトレイ番号はすべて同一番号(Custom)扱いとなるため、実現不可能。
    よってDeviceCapabilities関数のDC_BINSを使用することにし、VB6でテストを行ったところうまくいった。
    しかし、VB.NETに乗せ変えたところ、出力バッファに値が入ってこない。
    
現在のソース:
    
    ’---宣言
    Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" ( _
ByVal pDevice As String, _
ByVal pPort As String, _
ByVal fwCapability As Long, _
ByVal pOutput As string, _
ByVal pDevMode As String) As Integer

Private Const DC_BINS As Integer = 6

 

888 名前:887 :2005/04/26(火) 09:51:41
   ’---呼出
' バッファに必要なサイズを取得
    intSupportedBinsNeeded = _
DeviceCapabilities(strPrinterDeviceName, strPrinterPortName, intDeviceCapability, vbNullString, vbNullString)

' バッファを確保
ReDim intSupportedBins(intSupportedBinsNeeded - 1)

' 使用できる給紙方法を取得
intWin32apiResultCode = DeviceCapabilities(strPrinterDeviceName, _
strPrinterPortName, _
intDeviceCapability, _
intSupportedBins(0).ToString, _
vbNullString)


API宣言時のpOutput、pDevModeはVBではAnyで宣言されていました。
給紙方法取得時のintSupportedBins(0).ToStringがおかしそうです。
暗黙的な変換が出来ないため、string型にして渡していますが意味がないような気がします。
Web等で調べ、いろいろ試しましたがどうも解決できません。
よろしくお願いします。

889 名前:デフォルトの名無しさん :2005/04/26(火) 10:01:51
>>887
こっちはWin32ネイティブのAPIスレだから.NETスレ行ったほうがよろし。


890 名前:887 :2005/04/26(火) 12:49:43
わかりました。ありがとうございます。
お邪魔致しました。

891 名前:デフォルトの名無しさん :2005/04/26(火) 13:34:49
俺はMutexでのチェックは成功していてFindWindowで失敗している説を
唱えてみる。

>>880
現在開いているファイル名をCaptionに表示していないか?
んでもって、FindWindowで初期状態のCaptionで検索してないか?

892 名前:デフォルトの名無しさん :2005/04/26(火) 13:45:21
>>880
コードが間違っているか、別のEXEが動いている。

893 名前:デフォルトの名無しさん :2005/04/26(火) 18:25:27
クライアント領域に表示したグラフィックをビットマップファイルに保存する方法を教えてください。

894 名前:デフォルトの名無しさん :2005/04/26(火) 18:36:23
>>893
うまいことやる。

895 名前:デフォルトの名無しさん :2005/04/26(火) 18:44:33
>>893
それくらいググって解決できないようじゃきのこれないぞ。

896 名前:デフォルトの名無しさん :2005/04/26(火) 18:45:15
Alt + PrintScr

897 名前:デフォルトの名無しさん :2005/04/26(火) 18:56:27
この先生きのこる

898 名前:デフォルトの名無しさん :2005/04/26(火) 19:12:23
>>893
ttp://www.sm.rim.or.jp/~shishido/
きのこって下さい

899 名前:デフォルトの名無しさん :2005/04/26(火) 21:38:30
newで割り当てた配列をdeleteしてもメモリリークが凄まじいのですがなぜですか?

900 名前:デフォルトの名無しさん :2005/04/26(火) 21:39:34
delete[]。すれ違い。

901 名前:デフォルトの名無しさん :2005/04/26(火) 21:41:50
[]の付け忘れとかそんな低次元の話じゃねぇよタコ。お前真性のアホか?
そんなんだったらコンパイルエラーでわかるだろうがボケ

902 名前:デフォルトの名無しさん :2005/04/26(火) 21:53:10
そんなんでコンパイルエラーは出ませんよ。

903 名前:デフォルトの名無しさん :2005/04/26(火) 22:13:15
901 晒し age

904 名前:デフォルトの名無しさん :2005/04/26(火) 22:14:52
うるせぇっつーの。配列で割り当てる以外にnew関数はつかわねぇんだよ

905 名前:デフォルトの名無しさん :2005/04/26(火) 22:17:13
ポカーン

906 名前:デフォルトの名無しさん :2005/04/26(火) 22:17:26
つstd::vector

907 名前:デフォルトの名無しさん :2005/04/26(火) 22:17:32
うほっ!、いいキテガイ!

908 名前:デフォルトの名無しさん :2005/04/26(火) 22:34:14
クラスの配列とかじゃないことを祈る

909 名前:デフォルトの名無しさん :2005/04/26(火) 23:07:46
>>881
コールバックであるということを明示的にするためにあえてつけるという選択肢もある。

910 名前:デフォルトの名無しさん :2005/04/27(水) 00:03:05
急速にスレの質が低下してまいりました

911 名前:デフォルトの名無しさん :2005/04/27(水) 00:13:35
プログラムで最小化ボタンを無効にしたいんだけどどうすりゃいいの?

912 名前:デフォルトの名無しさん :2005/04/27(水) 00:32:13
>>911 超FAQ
GetSystemMenu
EnableMenuItem / DeleteMenu

913 名前:デフォルトの名無しさん :2005/04/27(水) 12:27:13
>>899
藻前のメモリ管理がおかしいから。

914 名前:デフォルトの名無しさん :2005/04/27(水) 15:37:50
もう解決したから今更出てくんなよwwwwwww
メモリ管理だってwwwwwwカスはmallocでも使ってろよwwwwww

915 名前:デフォルトの名無しさん :2005/04/27(水) 15:51:30
急速にスレの質が低下してまいりました

916 名前:デフォルトの名無しさん :2005/04/27(水) 16:02:04
>>904
>new関数

そうか、newは関数だったのか。(プ

>>914
>メモリ管理だって
>mallocでも使ってろよ

malloc()系しか管理が必要ないと思ってるの?(プ

917 名前:デフォルトの名無しさん :2005/04/27(水) 16:18:12
うわぁ・・・香ばしい・・・関数に突っ込む奴なんてはじめてみたwwwwwwww

918 名前:デフォルトの名無しさん :2005/04/27(水) 16:23:18
おまけにmalloc()系しか管理が必要ってなんだろwwwwwwwww
超意味不明wwwwwwwwwwwwwお前みたいカスにはmallocがお似合いってことなんだがwwwwwwwwwwwwwwwwwwwwwwwwwwww

919 名前:デフォルトの名無しさん :2005/04/27(水) 16:33:01 ?#
mallocを使う場合の方が(自分で書く必要のある)メモリ管理コストが大きいわけだが。

920 名前:デフォルトの名無しさん :2005/04/27(水) 17:01:53
急速にスレの質が急速に急速に低下してまいりました急速に

921 名前:デフォルトの名無しさん :2005/04/27(水) 17:31:15
ペタワロスw

922 名前:デフォルトの名無しさん :2005/04/27(水) 17:42:04
ピコワロスw

923 名前:デフォルトの名無しさん :2005/04/27(水) 17:52:02
ヨクトワロスw

924 名前:デフォルトの名無しさん :2005/04/27(水) 17:52:56
>>918
あなたのこと 嫌いじゃないの 嘘じゃないわ ほんとよ
ラ・ウスラ・デラ・ギポン・デ・リルカ・ニョキニョキ ニョキニョキ

925 名前:デフォルトの名無しさん :2005/04/27(水) 18:03:49
>>917
「operator new」をどう訳すと「new関数」になる訳?

926 名前:デフォルトの名無しさん :2005/04/27(水) 18:37:03
リーテ・ラトバリタ・ウルス アリアロス・バル・ネトリール

927 名前:デフォルトの名無しさん :2005/04/27(水) 21:34:35
sizeof を関数といってるようなもんだな。

928 名前:デフォルトの名無しさん :2005/04/27(水) 21:41:37
>>899-927
おまいら全員スレ違い
あっちいけ(`Д´)彡

929 名前:デフォルトの名無しさん :2005/04/27(水) 21:43:47
>>928
どっち?

930 名前:デフォルトの名無しさん :2005/04/27(水) 21:44:05
俺のreturn関数が黙ってないぜ

931 名前:デフォルトの名無しさん :2005/04/27(水) 21:44:40
>>926
シイテ イウナラバ ウィルス
アリアマル バグ ナクナリーヌ

932 名前:デフォルトの名無しさん :2005/04/27(水) 22:38:26
リストビューにチェックボックスをつけました。
チェックボックスを操作しようと思ったのですがチェックボックスのハンドルの取得方法が分かりません。
GetDlgItemを使うのかと思いましたが引数がおかしいのか上手くいきませんでした。
どうすればいいかご教授お願いします。

933 名前:デフォルトの名無しさん :2005/04/27(水) 22:48:48
チェックボックス作成したときの戻り値をウィンドウハンドルに代入。
終わり

934 名前:デフォルトの名無しさん :2005/04/28(木) 02:12:33
>>927
operatorは実装をオーバーライド出来るが、sizeofはできないから
全然違う。

935 名前:デフォルトの名無しさん :2005/04/28(木) 02:14:11
俺のif関数をお見舞いするぞ

936 名前:デフォルトの名無しさん :2005/04/28(木) 11:12:59
>>932
うろ覚えだが、notify じゃないの。間違っていたらゴメン。

937 名前:デフォルトの名無しさん :2005/04/28(木) 11:58:09
CPUがいくつ搭載されているかを調べる方法を教えてください。できればそれがHTかどうかもわかるとよいのですが。

938 名前:デフォルトの名無しさん :2005/04/28(木) 12:05:11
>>937
アセンブリ命令。


939 名前:デフォルトの名無しさん :2005/04/28(木) 12:29:11
>>938
ありがとう。ブラスレに行ってみます

940 名前:デフォルトの名無しさん :2005/04/28(木) 13:01:20
>>937
GetSystemInfo

941 名前:デフォルトの名無しさん :2005/04/28(木) 13:53:14
OSの終了処理をメッセージをハンドリングしないで
確認する方法は無いでしょうか?
OSのステータスを取って来る関数を知りませんか?
OSはWindowsXPです。言語はCです。
ご指導のほど、どうか宜しくお願いします。

942 名前:デフォルトの名無しさん :2005/04/28(木) 14:10:33
>>941
何を確認したいの?

943 名前:デフォルトの名無しさん :2005/04/28(木) 14:11:22
ボタン(CreateWindow"BUTTON"で作る)で、
特定の色を透過する方法がありましたら教えてください。

944 名前:デフォルトの名無しさん :2005/04/28(木) 14:17:05
ボタン(CreateWindow"BUTTON"で作る、しかも透明)de.

945 名前:943 :2005/04/28(木) 14:17:21
>>943
ボタンにビットマップを表示するときにです。

946 名前:943 :2005/04/28(木) 14:18:28
>>944
すいません。詳細説明が足りませんでした。

947 名前:941 :2005/04/28(木) 14:22:28
>>942
すばやいレスありがとうございます。
あるプロセスを監視し、そのプロセスがdownしたとき、
再起動をかけるするサービスを作成しています。
OS終了時にはそのプロセスがdownしてもNOPにしたいのです。
諸事情でwondowハンドルを持ちたくないのです。

948 名前:デフォルトの名無しさん :2005/04/28(木) 14:22:48
>>943
もう一度、一から日本語で説明汁!

949 名前:デフォルトの名無しさん :2005/04/28(木) 14:26:46
>>947
メッセージフックでいいんジャマイカ?

950 名前:943 :2005/04/28(木) 14:28:04
>>948
分かりました。

VC、又はBCC、OSはMeでウィンドウズプログラムを作っています。
CreateWindowという関数を使い、その第一引数を"BUTTON"にすると、
ボタンを使う事が出来ると思いますが、そこにビットマップを表示するとき、
特定の色を透過して(抜き色にして)表示する方法を教えてください。

951 名前:デフォルトの名無しさん :2005/04/28(木) 14:35:41
>>950
検索したらそれらしいものがあったが?

【検索結果】
  ttp://search.yahoo.co.jp/bin/query?p=SDK+%a5%dc%a5%bf%a5%f3+%a5%d3%a5%c3%a5%c8%a5%de%a5%c3%a5%d7&fr=top
【ボタンコントロール】
  ttp://skamachi.gotdns.com/sdk3.html

952 名前:デフォルトの名無しさん :2005/04/28(木) 14:38:40
>>947
メッセージ処理が出来ない問題を解決した方が速いとおもう。
>>950
オーナードロー

953 名前:943 :2005/04/28(木) 14:39:43
>>951
ありがとうございます。
自分は、「CreateWindow BUTTON 透過」で調べていました。
上げていただいた場所を調べてみたいと思います。

954 名前:943 :2005/04/28(木) 14:44:29
>>952
ありがとうございます。そのヒントも参考にさせていただきます。

955 名前:デフォルトの名無しさん :2005/04/28(木) 14:48:09
説明不足がたりないぞ

956 名前:941 :2005/04/28(木) 14:56:24
> 949 & 952
ありがとうございます。
スレッドきって、そこでメッセージを待たせることにしました。
感謝します。> ALL

957 名前:デフォルトの名無しさん :2005/04/28(木) 15:05:16
>>947
あるプロセスの方をサービスにして、自動再起動を有効にするとか。

958 名前:941 :2005/04/28(木) 15:39:12
>>957
実は、「あるプロセス」はサービスで、自動再起動を有効にしても
再起動されないことがあるので、「あるプロセス」を再起動するサービスを
自作しているところです。
「あるプロセス」はバイナリ配布のプログラムで、なぜ、自動再起動が
出来ないのか、は追えませんでした。

959 名前:デフォルトの名無しさん :2005/04/28(木) 15:59:59
>>958
QueryServiceStatusExが失敗したときのエラーコードに
ERROR_SHUTDOWN_IN_PROGRESS
ってのがあるらしいけど。参考までに。

960 名前:デフォルトの名無しさん :2005/04/28(木) 16:42:18
>>940
GetSystemInfoでCPUの機能の有無って取れたっけ?
CPUID命令で取るのが一般的な気がするが‥‥

961 名前:941 :2005/04/28(木) 16:53:51
>>959
ありがとうございます。
QueryServiceStatusEx()自体知らなかったので、
CreateToolhelp32Snapshot()から引っ張ってきて
監視してました。
サービスのステータスを把握する方法から検討し直して
みたいと思います。

962 名前:デフォルトの名無しさん :2005/04/28(木) 17:56:30
サービスなら、
RegisterServiceCtrlHandlerExで、
SERVICE_CONTROL_SHUTDOWN
がとれるんじゃないのか?

963 名前:デフォルトの名無しさん :2005/04/28(木) 19:05:02
ATLベースのサービスを作って、その中でスレッドを起動してメールスロットを作ってあります。
他のプロセスからそのメールスロットを開きに行くと、アクセス拒否になってしまいます。

ググってそれっぽい事もしてみたのですが(スレッドやメールスロットのSAの設定)、完全に行き詰まってしまいました。

どなたか、アドバイスお願いします。

964 名前:デフォルトの名無しさん :2005/04/28(木) 19:19:49
>>963
ユーザ権限とかの問題じゃないの?
サービスのユーザと通常のプロセスのユーザは違うはずだぞ?

965 名前:デフォルトの名無しさん :2005/04/28(木) 19:22:08
>>964
たぶんそのあたりだと思うのですが、どこのどの権限をどうやっていじれば良いがわからんとです…

966 名前:デフォルトの名無しさん :2005/04/28(木) 19:24:10
駆動しているユーザが違うのでないの?
サービスがLocalServiceで、クライアントが一般ユーザとかさ。
そのあたりを、SECURITY_DECSRIPTERでなんとしないといけない。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16392&forum=7

967 名前:デフォルトの名無しさん :2005/04/28(木) 20:50:02
次スレはテンプレで注意しておいてくれ。

・質問者は、正しい答えが返ってこなくても暴れないこと
・スレ住人は、質問者をわざと困惑させるのを楽しむのは慎むこと。



968 名前:デフォルトの名無しさん :2005/04/28(木) 21:27:44
>>967
2つとも「Why?」なんですけど。何が悪いの?

969 名前:デフォルトの名無しさん :2005/04/28(木) 21:32:55
まともな答えが返ってこない場合は質問の仕方が悪いことが多い。

970 名前:デフォルトの名無しさん :2005/04/28(木) 21:58:58
>>969
逆も多いな。

971 名前:デフォルトの名無しさん :2005/04/28(木) 22:03:37
悪い答えしか返ってこない場合は質問の仕方がまともなことが多い?

972 名前:デフォルトの名無しさん :2005/04/28(木) 22:15:44
全部春厨のせいです

973 名前:デフォルトの名無しさん :2005/04/28(木) 22:23:20
>>960
IsProcessorFeaturePresent()
ってのがあるよ。

974 名前:デフォルトの名無しさん :2005/04/29(金) 02:47:41
お願いします。ディスク上にないファイル名において
拡張子に対応するアイコンを動的に取得したいのですが、
ExtractAssociatedIcon()やSHGetFileInfo()は、ディスク上に
実在するファイルでないと拡張子があってもアイコンを返してくれません。

そこを解決するときに、
作業用の空ファイルをディスク上に作ってそれを経由して取得するのと
レジストリの拡張子のエントリからappIDやshell登録のopenキーを探索して
実行ファイルかDLLを特定し、それからExtractIconで取得するという長い方法では
みなさんではどちらを使いますか?


975 名前:デフォルトの名無しさん :2005/04/29(金) 03:44:06
>>974
どちらも使わないに一票
http://forums.belution.com/ja/vc/000/024/78s.shtml

976 名前:デフォルトの名無しさん :2005/04/29(金) 04:58:45
>>974
おお!貴重な情報をどうもありがとうございます。
できました&すごく助かりました。

977 名前:デフォルトの名無しさん :2005/04/29(金) 04:59:32
アンカーミス >>974 × >>975


978 名前:978 :2005/04/29(金) 12:07:03
御願いです、どなたか助けて下さい・・・。
単純にAlphaBlend関数を使おうとしているのですが

[CODE error LNK2019: 未解決の外部シンボル
__imp__AlphaBlend@44 が関数 "long __stdcall WindowProc
(struct HWND__ *,unsigned int,unsigned int,long)"
(?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。]

[CODE fatal error LNK1120: 外部参照 1 が未解決です。]

というエラーがでてしまいます。
ネット上で「VC++.6の場合はmsimg32.libをリンカで設定〜」などという事が書かれている
のは発見したのですが、私の使っているVC++.NETではその作業は必要ない、
という書き込みも発見しました。
それでも一応設定してみようとしたのですが、タブを探し回っても「オブジェクト/ライブラリモジュール」
なんて欄はでてこないのです。

教本をみながらコードを打っている完全初心者です。
お教え下さい・・。


979 名前:デフォルトの名無しさん :2005/04/29(金) 12:32:28
>>978
それは明らかにmsimg32.libをリンクしてないから出るメッセージだ。
.NET持ってないから知らんがヘルプ見て設定するところを探せ。

980 名前:978 :2005/04/29(金) 13:19:30
979さんのおかげで、「リンクしてない」という原因理由に自身がもてました。

いろいろ試した結果、

「プロジェクト」

「(プロジェクト名)のプロパティ」

ダイアログボックスの中の「リンク:入力」

「追加依存のファイル」欄に「msimg32.lib」と入力

で解決しました。

協力ありがとうございます。

981 名前:デフォルトの名無しさん :2005/04/29(金) 16:14:36
 HMODULE(0)という表記を見かけたんですが、これはどういう意味なんでしょうか?
 HMODULEに引数は無かったと思うのですが。

982 名前:デフォルトの名無しさん :2005/04/29(金) 16:31:25
>>981
ゼロをHMODULE型にキャストしてんじゃねーの?
C++だとこういう書き方でもキャストになるんだよな。

983 名前:デフォルトの名無しさん :2005/04/29(金) 16:32:44
>>981
static_cast<HMODULE>(0)って意味かな?

984 名前:デフォルトの名無しさん :2005/04/29(金) 17:11:32
次スレ

Win32API質問箱 Build31
http://pc8.2ch.net/test/read.cgi/tech/1114762194/l50

985 名前:デフォルトの名無しさん :2005/04/29(金) 17:24:03
>>981
0で初期化されたHMODULE型の一時オブジェクトの生成

986 名前:982 :2005/04/29(金) 17:28:18
>>985
おお。いかにもC++的抽象化された概念。
どうにも俺はCやアセンブラの時代から抜け出せてないカンジ。
「C++の設計と進化」を熟読中。


■過去ログ置き場に戻る■ 1- 前250 最新50
DAT2HTML 0.33f Converted.