[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 09/26 11:03 / Filesize : 81 KB / Number-of Response : 377
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build67



1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:20:46 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build66
pc11.2ch.net/test/read.cgi/tech/1210775622/

83 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:58:44 ]
>>81
説明の正しさ、じゃなくてBOOLなのにTRUE/FALSE以外を返すなということ。
GetMessageのように意味があってTRUE/FALSE以外を返すわけでも無さそうだし。

84 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:27:39 ]
Win16のときの、1バイトでも節約、て状況のせいなのかもな。
そして互換性のためにうっかり変えられない、と。

85 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:30:17 ]
8や500を返すのが互換性ってのもおかしな話だなぁ

86 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:33:22 ]
if(GetOpenFileName(&ofn) == IDOK) { 〜 } とか書いてたら正常動作していたので間違いに気付かなかった事ならある

87 名前:72 mailto:sage [2008/06/10(火) 18:37:18 ]
>>75-77 >>79-80
レスありがとうございます
>>77 が僕が今詰まってる問題に一番近いっぽいです ><。
アクセラレータは動いてるのですが、ボタンシミュレートが問題です。

88 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 18:38:51 ]
だからSendMessage(hButton,BM_CLICK,0,0)でいいだろうが

89 名前:72 mailto:sage [2008/06/10(火) 18:52:00 ]
>>88
おおっ
ボタンシミュレートできました
>>88さん、どうもです。感謝ですー ><。

90 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:48:36 ]
人の話を聞かない性格の典型的パターンだな

91 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:50:18 ]
>>83
実装効率を考えると真の際 TRUE 以外の値を返した方がいい場合もある。
TRUE しか返さない、としてしまうと、その効率のいい実装が取れなくなってしまう。
例えば is 系関数の戻り値を戻り値にしたい場合とか。
is 系関数はメモリ効率のため全ての関数で1つのテーブルを共有し、
ビット演算を使ってそれぞれの関数の戻り値を決めるよう実装されている場合がある。
int isalpha(int letter) { return table[letter] & 1; }
int isdigit(int letter) { return table[letter] & 2; }
int isalnum(int letter) { return table[letter] & 3; }
みたいな感じで。
こういう関数を戻り値に直接指定したい場合とか、0/1 にならないことがある。

そして、果たして BOOL の戻り値を作成する際に使った関数が
全て真偽を 0/1 で返すと確かめることはできるだろうか?
もしかしたら急に仕様が変えられるかもしれない。
それを考えて常に isalpha(ch) ? TRUE : FALSE のように書く事はできるかもしれないけど、
無駄も多いし書き忘れるミスを犯す事もあるだろう。
結局、bool 型のように true/false の2値性を保証する型で typedef されていない以上、
BOOL は 0/1 の2値性を保証しない方が安全ということになる。

TRUE や FALSE は真偽値を与える箇所で
条件式を書く事無くダイレクトに真か偽かを指定するために使う物であって、
比較に使う物ではない。
そもそも真偽値をさらに比較するという発想自体が
二度手間の無駄な発想としか言いようが無い。



92 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:53:36 ]
C言語なんだから0/1じゃなくて
0/非0で考えろ

93 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:28:41 ]
C言語で考えるとむしろ0/1じゃね?
比較とかの評価結果は0/1で返すと決まってるし。
どちらかというと、アセンブラレベルの話だな。

BOOLを0/1へ変換するなら !!value で一応はできるな。
見た目が宜しくないのでお勧めはしないけど。

94 名前:デフォルトの名無しさん [2008/06/11(水) 00:31:39 ]
HTMLを解析したいのでIHTMLDocument2を使おうと思っています

CComPtr<IHTMLDocument2> aDoc;
aDoc.CoCreateinstance(CLSID_HTMLDOCUMENT);
aDoc->put_URL(CComBSTR("~")); //URLの読み込み(のつもり)
aDoc->get_images()


この put_URL を使うとブラウザで引数のURLを開いてしまい、また、get_imagesで取得したイメージコレクションのサイズが0になっています。
まず、「ブラウザを開かないでHTMLを解析したい」のと、「get_images で取得できていない」理由がよく解りません。

コマンドラインから使うツールのつもりなのでCUIの方がうれしいのですが、ダイアログかなにかで表示させる必要があるのでしょうか?
#イメージとしてはURLを引数で渡すとそのページのIMG src="***" を抽出するプログラムです。

95 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:38:26 ]
>>93
条件式は 0/1 を返すが、
if 文や while 文などの中身は 0/非0 で判定するから
C で考えるなら 0/非0 だな。

96 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:50:47 ]
>比較とかの評価結果は0/1で返すと決まってるし。
処理系依存

97 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:52:54 ]
↑馬鹿


98 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 02:58:43 ]
はあぁ?

99 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:00:22 ]
妄想は日記の中でしてね。

100 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:44:32 ]
馬鹿かお前
Win32なんて基本的に妄想が中心だろ
MSDNに載ってないような事をしたければ妄想するしかないし

101 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:45:32 ]
↑馬鹿



102 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 09:56:18 ]
↑阿呆

103 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:03:46 ]
↑馬鹿

104 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:07:05 ]
↑阿呆

105 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:08:20 ]
↑馬鹿

106 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:08:55 ]
↑ば、馬鹿じゃないのっ

107 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:10:01 ]
↑阿呆

108 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:21:25 ]
↑あ、阿呆じゃないのっ

109 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:25:26 ]
↑馬鹿

110 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:26:12 ]
↑ば、馬鹿じゃないのっ

111 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:33:12 ]
訳:かまってほしいな



112 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:36:37 ]
かまってほしくない人はレスしないでください

113 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:39:16 ]
>>94
IHTMLDocument2 を使うことが絶対条件なの?

114 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:32:55 ]
必要条件

115 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:36:22 ]
BOOLを返すAP(Iは必ず

bool Successed = Hoge(...) != 0;

としてる。

116 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:40:17 ]
だから?

117 名前:60 mailto:sage [2008/06/11(水) 12:57:43 ]
ちょっとした愚痴のつもりだったんだが…
いまさらMSDN書き替えられても困るし


で、結局>>68の指摘してる間違いってなんなんだ?
すごく気になるんだけど

118 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:06:50 ]
単なるかまって厨でFA

119 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:13:40 ]
www.open-std.org/jtc1/sc22/wg14/www/standards.html

120 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:21:09 ]
>>68の指摘は分からんが、CのAPIではないなw
API自体は言語関係ないからね。
そう考えると、Cの文法や流儀を元に議論するのはナンセンスかもしれん。

121 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:31:32 ]
馬鹿だなあ
文字列がナルターミネートな時点でC前提だろ



122 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:35:03 ]
↑馬鹿

123 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:54:48 ]
↑阿呆

124 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:58:36 ]
呼び出し規約そのものは、cdeclとpascalの中間だけど
まあC用だな、他の言語はそれにあわせてるだけ。

125 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:05:18 ]
そもそもwin32API自体がCで書かれているのだからC前提で当然
そんな事もわからない素人が増えちゃったんだね・・・

126 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:17:41 ]
↑馬鹿

127 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:19:19 ]
↑阿呆

128 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:20:51 ]
↑馬鹿

129 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:21:36 ]
馬鹿も阿呆も漏れだけでいい

130 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:29:14 ]
↓馬鹿

131 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:29:52 ]
え?おれも?



132 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:41:59 ]
まとめ:かまってほしいな

133 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:53:55 ]
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ

134 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:34:53 ]
「↑馬鹿」と「↑阿呆」はそれぞれ同一人物による書き込み
つまり荒らしは2名

135 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:51:30 ]
↑はずれ

136 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:02:54 ]
1人だったのか

137 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:06:37 ]
↑はずれ

138 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:15:14 ]
答え:多重人格(一人)

139 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:23:45 ]
↑はずれ

140 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:43:15 ]
現在の稼動状況
人格1: >>135
人格2: >>137
人格3: >>139
人格4〜16: Idle

最大16人格まで拡張可能
それぞれの人格は並列動作
(例えば人格1から人格2〜16のレスを見ても同一人物であるという認識は本人には無い)
記憶装置(脳)は16人格で共有されるため、正常な人間に比べて人格それぞれの知識は16分の1

141 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:54:06 ]
>>140みたいな事を平気で書き込めちゃう奴って本気で近づきたくない



142 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:57:37 ]
↑馬鹿

143 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:01:29 ]
↑阿呆

144 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:06:05 ]
ビリーミリガンよりは少ないな

145 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:20:27 ]
かまってほしいな

146 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:43:19 ]
(・ω・` )ヾ(・ω・* )ネェネェ カマッテヨ

147 名前:94 [2008/06/11(水) 18:45:28 ]
>>113
> >>94
> IHTMLDocument2 を使うことが絶対条件なの?

いえ、HTMLの解析が簡単にできればIHTMLDocument2でなくても問題ないです。
MSDNの中を探してたらそれらしいメソッドがIHTMLDocument2に見つかったので使っている所です。

ブラウザを開かないのはIHTMLDocument4::CreateDocumentFromURLを使えばいいのかなぁ

148 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:36:01 ]
>>147
もし、htmlソースが文字列として得られるのなら、
・空のドキュメントにhtmlをwriteしてDOMを作ったことはあるなあ。
・普通に文字列処理で何とかするのも手。
・TidyとかでXHTMLにしてXMLパーサに読ませるとか。

URLがあるんなら、そういう時のためのいいやり方が別にあるような気はするけど。

あと、こっちのスレの方が詳しいかもしれない。
 IEコンポーネントを使い倒すスレ Ver.2
 pc11.2ch.net/test/read.cgi/tech/1145189322/

149 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:24:06 ]
>>147
用途が分からないから判断が難しいけど、

IHTMLDocument2だとブラウザは開くねぇ。隠したとしても音が残る。
XMLパーサーだと規約に沿ってないとエラーになる。

簡単なのはWinInetを使って、正規表現を使って解析することかなぁ。

150 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 03:14:42 ]
>>149
APIフックして音を消せば?ってのがこのスレ的な回答かな

151 名前:デフォルトの名無しさん [2008/06/12(木) 07:03:47 ]
全角半角キーをスイッチのように使いたいのですが
押しても全角モードに切り替わらない良い方法はありませんか



152 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:21:13 ]
フック

153 名前:デフォルトの名無しさん [2008/06/12(木) 14:41:05 ]
>>152
詳しく

154 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:53:39 ]
クック

155 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:06:35 ]
ドゥ

156 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:16:20 ]
訳:かまってほしいな

157 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:20:03 ]
訳:ググレ

158 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:33:13 ]
いちごみるくうめぇ

159 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:45:14 ]
ヾ(@⌒¬⌒@)ノ ウマヒィ

160 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:49:07 ]
社会から自分が必要とされていないのではないかと思っているから荒らす
少しでも反応があれば自分は必要とされているんだと勝手に勘違いして納得する
それがかまってちゃん

こうして俺たちがかまってあげているうちは街中で無差別殺人なんてしないだろうから
人助けの一つだと考えて適当に相手してあげておいた方がいいかもな

161 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:54:19 ]
>>160
こうですか!わかりません><



162 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:55:35 ]
探すのが面倒だから荒らすんですね(>ω<

163 名前:デフォルトの名無しさん [2008/06/12(木) 18:52:04 ]
フックについてググってもvbやらdelphiやらc++やらapiやら混在してる割に
ヒット数が意外と少ないんですがとりあえず
SetWindowsHookEx WH_KEYBOARD WM_INITDIALOG
あたりを使う方法でいいのでしょうか?

164 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:53:22 ]
最後は関係ない希ガス

165 名前:デフォルトの名無しさん [2008/06/12(木) 19:20:16 ]
>>164
どうもです。そのものずばりの情報はなかなか見つかりませんね。
範囲があまりにも広いのですが絞るとほとんどhitせず・・・もう少し調べてみます

166 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:02:18 ]
動的に追加したリストボックスをDestroyWindow()する時に予めLB_RESETCONTENTする必要はありますか?

167 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:14:24 ]
>>166
deleteする時に予めデストラクタを呼んでおく必要はありますか?
って聞いてるようなモンだぞ

168 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:26:55 ]
>>167
DestroyWindow()するだけで良いのですね。
ありがとうございました。

169 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:52:18 ]
スレ違いのような気もするけど、気にせず教えてください。

kbdacc とか 秀Caps のようなキーリピートの高速化ってどうやって実現してるんでしょうか?
SystemParametersInfo で設定できる値よりずっと速くできるようですが。


170 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:15:27 ]
>>165
自プロセスへのフックは簡単だと思うけど‥‥他プロセスやグローバルフックになると共有メモリとかの処理が必要になってくるけど

171 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:17:16 ]
>>169
気にせず教えてください…?頭わいてんのか?



172 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:29:33 ]
お忙しい中すみませんが、気にせず教えてください。

173 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:33:16 ]
教えを乞う言葉じゃない気がしますが、気にせず教えてください。

174 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:54:35 ]
>>169
ずっと速くできるようですが気にせず設定してください

175 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:12:31 ]
流れがおかしいようですが気にせず質問してください

176 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:15:39 ]
ツールバーの表示位置を変えたいのですが、どのようにすればいいですか?

177 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:21:10 ]
movewindow

178 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:14:46 ]
>>177
レスありがとうございます。
後一つわからないことがありまして、
ツールバーの高さを変えるにはどうすればいいですか?

179 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:15:13 ]
>>177
APIの大文字小文字は区別されます。嘘を書くのをやめましょう。

180 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:16:35 ]
>>178
ボタンを大きくする

181 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:28:58 ]
>>180
ありがとうございます。
御礼に私の集めた女子高生画像10枚ほどぅpしようと思うのですが



182 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:33:42 ]
>>181
早く汁
ttp://www.uploda.org/

183 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:00:03 ]
>>181-182
偽者&自作自演乙






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<81KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef