Win32API質問箱 Build69at TECH
Win32API質問箱 Build69 - 暇つぶし2ch200:デフォルトの名無しさん
08/08/08 22:05:25
だいたい処理系は未定義な動作をどういう動作にするか自由に決められるんだから、
処理系を作ったのと同じ組織が書いたコードが動作の未定義な部分を含んでいてもなんら差し支えない。

201:デフォルトの名無しさん
08/08/08 22:06:53
> コンパイラについてくるぐらいだから処理系付属といっても差し支えないだろ。
こんなアバウトな俺様定義するくせにアンダースコアには拘るのか

202:デフォルトの名無しさん
08/08/08 22:13:44
訳:かまってほしいな

203:デフォルトの名無しさん
08/08/08 23:28:35
>>175
>#define FreeDiskIO(buf) VirtualFree(buf, 0, MEM_RELEASE)

あー、そのコードバグってますんで、以下のでよろしく。
#define FreeDiskIO(buf) VirtualFree(buf, 0, MEM_RELEASE | MEM_DECOMMIT)

204:デフォルトの名無しさん
08/08/08 23:39:00
ここで奴がキモイ自己陶酔日記を引っさげて登場

 ↓ ↓ ↓ ↓

205:デフォルトの名無しさん
08/08/08 23:43:19
CryptCreateHashで作った
HCRYPTHASHオブジェクトは使いまわしていいのでしょうか?
CryptHashDataとかでハッシュ値生成して使い終わったら
一度CryptDestroyHashで開放すべきですか?

206:デフォルトの名無しさん
08/08/08 23:46:59
リファレンス嫁よ。ゆとりが

207:デフォルトの名無しさん
08/08/08 23:52:43
わからないんならレスしないでください

208:デフォルトの名無しさん
08/08/08 23:56:23
>>207
リファレンス読めば理解できると分かっている

209:デフォルトの名無しさん
08/08/09 00:01:58
>After one of the functions from this list has been called,
>CryptHashData and CryptHashSessionKey cannot be called.

すみませんこの部分を見落としてました><;
どもです。

ちなみに>>207は私じゃないですw

210:デフォルトの名無しさん
08/08/09 00:09:26
ウィンドウを綺麗にC++のクラスで纏めるにはどのAPI使えばいい?wndclassのwndprocにクラスの関数入れたらエラーになるんですが・・・

211:デフォルトの名無しさん
08/08/09 00:12:39
RegisterClass(Ex)
CreateWindow(Ex)

212:デフォルトの名無しさん
08/08/09 00:13:27
>>210
そんなんじゃC++もたいしたレベルじゃねぇだろお前
ヒント:static

213:デフォルトの名無しさん
08/08/09 00:19:02
URLを指定できるwavファイルを再生するAPIはありますか?


214:デフォルトの名無しさん
08/08/09 00:36:33
具体的にどういうこと?

215:デフォルトの名無しさん
08/08/09 00:41:48
ダウンロードした音声ファイルをユーザが使用することのないように、
ネット上の音声ファイルをソフト内で再生したいです。

216:デフォルトの名無しさん
08/08/09 00:45:45
俺なら数分で作れるな

217:デフォルトの名無しさん
08/08/09 00:46:45
ちなみにVB6を使っています

218:デフォルトの名無しさん
08/08/09 00:52:16
VB6なんてとっくにサポート切れてるのにまだ使ってる人いるんだね・・・

219:デフォルトの名無しさん
08/08/09 00:52:57
今すぐC#に切り替えることを勧める。VBなんてもはや廃れつつある言語。

220:デフォルトの名無しさん
08/08/09 00:55:04
そうですか、たまたまこれしか家にはないんですよね・・・

221:デフォルトの名無しさん
08/08/09 00:57:21
大丈夫開発環境はただで揃うから

222:デフォルトの名無しさん
08/08/09 01:00:02
そうなんですか!
そういえばVC++6.0もあったのですが(使ってない)
やるなら何がいいのでしょう?

223:デフォルトの名無しさん
08/08/09 01:06:48
簡単にいきたいならC#

224:デフォルトの名無しさん
08/08/09 01:08:01
たまたまVB6が家にあるってのもおかしな話だな

225:デフォルトの名無しさん
08/08/09 01:13:41
過去に親が使ってました

226:デフォルトの名無しさん
08/08/09 01:19:10
>>224
俺の家にはたまたまVC6ProとVS2003ProとVS2005Proがあるけど
結局VC6しか使ってない

227:デフォルトの名無しさん
08/08/09 01:19:22
リアル小学生な感じがしてきた・・・

228:デフォルトの名無しさん
08/08/09 01:27:07
VisualStudio6.0があります

229:デフォルトの名無しさん
08/08/09 01:27:39
もちろんたまたま親が

230:デフォルトの名無しさん
08/08/09 01:28:48
割れ厨()笑だらけですね

231:デフォルトの名無しさん
08/08/09 01:31:47
こんなのがプログラミングしようとしててすみません。

232:デフォルトの名無しさん
08/08/09 01:35:03
昔と違って3万もあればVS2008std買えるからいい時代になったな。SDKはネットで簡単に入手できるし。

233:226
08/08/09 01:54:53
>>232
VS2003ProとVS2005Proが学生の時にtheSpoke版が4kで買えて衝撃的だったんだが
今はDreamSparkなんてやってるんだよなぁ

もうMSが何をしたいのか分からなくなってきた・・・

234:デフォルトの名無しさん
08/08/09 01:56:42
市場を独占気味にしたい

235:デフォルトの名無しさん
08/08/09 01:58:45
Borlandが社名変えたり戻したりしてる間に既に市場独占してただろ

236:デフォルトの名無しさん
08/08/09 02:05:21
いくら無料で手に入る時代でもやっぱ金かけないとダメでしょ
AC版でも学生がン万円出すのはそれなりにしんどいし、
そうして手に入れれば「よし頑張るぞー」って気持ちになれる

237:デフォルトの名無しさん
08/08/09 02:07:55
逆を言えば物にならなかった時に無駄になるのが嫌で
手を出せなかったという人もいるんだろうけどなー

元々そんな奴は物になんねーよと言う意見は取り合えず置いといて

238:デフォルトの名無しさん
08/08/09 02:07:58
うん、君はそうしとけばいいよ。

239:デフォルトの名無しさん
08/08/09 02:15:31
無料配布なんて貧乏人救済システムは要らない
ただでさえ無職ニートが多いこんなご時世に「いつかシェアウエアでガッポリ儲けてやる」とか
つまらない夢を抱く馬鹿が増えるだけ

240:デフォルトの名無しさん
08/08/09 02:33:40
増えたところで俺には関係ない
その馬鹿と同じ次元に居る奴にはつらいのかもしれんが

241:デフォルトの名無しさん
08/08/09 02:35:48
馬鹿で悪かったな
もう死んでも治りそうに無いよ

242:デフォルトの名無しさん
08/08/09 02:49:43
馬鹿は馬鹿なりに前向きに生きればいいだろ

243:デフォルトの名無しさん
08/08/09 02:56:59
もういいから

244:デフォルトの名無しさん
08/08/09 10:57:28
1>------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
1>リンクしています...
1>7.obj : error LNK2019: 未解決の外部シンボル __imp__timeGetTime@0 が関数 _ThreadFunc@4 で参照されました。
1>C:\Documents and Settings\****\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
1>ビルドログは "file://c:\Documents and Settings\****\My Documents\Visual Studio 2008\Projects\test\test\Debug\BuildLog.htm" に保存されました。
1>test - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
このエラーはどうやって直すんですか;;?
msimg32.libはリンカから追加しました。


245:デフォルトの名無しさん
08/08/09 11:03:14
>>244
winmm ってライブラリは無い?

246:デフォルトの名無しさん
08/08/09 11:22:33
>>245
追加したらできました
ありがとうございます

247:デフォルトの名無しさん
08/08/09 13:23:37
環境スレ行けよ…

248:デフォルトの名無しさん
08/08/09 14:29:07
行きたきゃお前が逝けよ

249:デフォルトの名無しさん
08/08/09 15:12:25
>>247
貴方の気分を害したことを謝罪いたしますと同時に遺憾の意を表します。
誠に申し訳ございませんでした

250:デフォルトの名無しさん
08/08/09 15:35:53
慇懃無礼だな

251:デフォルトの名無しさん
08/08/09 16:12:19
__imp__timeGetTime@0 でググれば分かるけどな

252:デフォルトの名無しさん
08/08/09 16:41:06
テトリスやブロック崩しくらい作れないとWin32APIの基礎を
覚えたとは言えませんか?

253:デフォルトの名無しさん
08/08/09 16:46:17
うん。

254:デフォルトの名無しさん
08/08/09 16:47:48
テトリスやブロック崩しはアルゴリズムのほうがメインになるからWin32APIとは関係ない

255:デフォルトの名無しさん
08/08/09 16:48:00
テトリスやブロック崩しなんて、大半がゲームロジックでほとんどAPI使わないだろ。
ペイントの方が一通りの要素が揃っている。

256:デフォルトの名無しさん
08/08/09 17:04:30
ペイントなんて、大半がペイントロジックでほとんどAPI使わないだろ。

257:デフォルトの名無しさん
08/08/09 18:21:15
GDIの基本操作を学ぶには良いんじゃないか?
傾斜・反転・回転以外はほぼGDIに丸投げっぽいし。

258:デフォルトの名無しさん
08/08/09 18:44:39
>>250
どうして慇懃無礼なんでしょうか?

259:デフォルトの名無しさん
08/08/09 18:47:59
>>250
俺のダチが世話になったな
今度群馬こいいい所紹介してやるからよ

260:デフォルトの名無しさん
08/08/09 21:08:00
ID出んから言いたい放題

わろす

261:デフォルトの名無しさん
08/08/09 21:53:00
質問です。既定のブラウザから例として「ぬるぽ ガッ」という検索結果のページをボタン一発で表示させたいのです。
詳しく言うと、

①プログラムのボタンを押す
②既定のブラウザで「ぬるぽ ガッ」という検索結果のページがブラウザが起動して結果が表示される

といった具合のものを作ろうと思っています。
既定のブラウザの取得方法は、
://www.atmarkit.co.jp/fdotnet/dotnettips/652getdefaultbrowser/getdefaultbrowser.html

でできましたが、その他ができません。
知恵を貸して頂けないでしょうか?

262:デフォルトの名無しさん
08/08/09 21:57:36
つ【俺の知恵】

263:デフォルトの名無しさん
08/08/09 21:57:54
うるちえ

264:デフォルトの名無しさん
08/08/09 21:59:29
URLリンク(www.atmarkit.co.jp)
こっちの方法でやればいいじゃんていうか.NETじゃん

265:デフォルトの名無しさん
08/08/09 21:59:46
>>261
ShellExecute

266:デフォルトの名無しさん
08/08/09 22:04:39
>>261
#include<windows.h>
int main(){
ShellExecute(NULL, "open", "URLリンク(www.google.co.jp)", NULL, "", SW_SHOWNORMAL);
return 0;
}

267:デフォルトの名無しさん
08/08/09 22:06:16
>>264
参考ページが.NETでしたね。
私の言語はPASCALです。

>>265
function ShellExecute(hWnd: HWND; // 親ウィンドウのハンドル
Operation : PChar // 操作
FileName : PChar // 操作対象のファイル
Parameters: PChar // 操作のパラメータ
Directory : PChar; // 作業ディレクトリ
ShowCmd : Integer)// 表示状態
: HINST;

ここでは操作がopen、ファイルがレジストリから取得したブラウザファイル、どこにそのアドレスを入れるのでしょう?


268:デフォルトの名無しさん
08/08/09 22:06:32
>>266
クエリストリングのbtnGとか要らないんじゃね?

269:デフォルトの名無しさん
08/08/09 22:07:13
>>266
っと私が打ち込んでいる間に・・・具体的なコードありがとうございます。
さっそく解決してしまいました。

ありがとうございました。


270:デフォルトの名無しさん
08/08/10 09:23:59
.NET に PictureBox というコントロールがあるのですが
これを VC++ で表現するならば
コントロール上にビットマップイメージを貼ってるだけに相当するんでしょうか?
よろしくお願いします

271:デフォルトの名無しさん
08/08/10 10:03:23
>>270
Win32だとStatic Controlに相当するな。
IDEのダイアログエディタだと「Picture Control」と表記されているが、
これはダイアログリソース上の表現で、結局はStatic Controlが生成される。

272:デフォルトの名無しさん
08/08/10 11:24:30
>>271
ありがとうございます
Static Control にスタイルが SS_BITMAP って感じですね

273:デフォルトの名無しさん
08/08/10 21:19:38
SendMessageTimeoutの引数であるpdwResultと
SendMessageTimeout関数自体の戻り値に違いは出るのでしょうか?

お願いします。

274:デフォルトの名無しさん
08/08/10 21:21:46
違いは出ます。意味が違いますから。

275:273
08/08/10 21:24:47
>>274
具体的にどういった違いなのでしょうか?
MSDNなどの資料には同じようなことしか書かれてなくて・・・

参考URLの掲示でもかまわないのでお願いします

276:デフォルトの名無しさん
08/08/10 21:29:03
>>275
lpdwResultはSendMessageの戻り値相当じゃないか。

MSDNより

lpdwResult
1 個の DWORD 型変数へのポインタを指定します。関数から制御が返ると、この変数に、メッセージの処理結果が格納されます。意味は、送信したメッセージにより異なります。

戻り値
関数が成功すると、0 以外の値が返ります。
関数が失敗した場合や、タイムアウトが発生した場合は、0 が返ります。

277:デフォルトの名無しさん
08/08/10 21:29:13
>>275
SendMessageTimeout の hwnd に無効なハンドルを入れた場合など

278:273
08/08/10 21:31:23
>>.276-277
なるほど納得がいきました
ありがとうございます

279:デフォルトの名無しさん
08/08/10 21:32:13
>>275
pdwResultは送ったメッセージに対する戻り値。
メッセージを送った先のプロシージャが返した値。

SendMessageTimeoutの戻り値は、SendMessageTimeoutそのものの結果。

280:デフォルトの名無しさん
08/08/11 11:06:58
RegisterClassExで作ったウィンドウクラスが有効かどうかを判定するAPIを教えてください

281:デフォルトの名無しさん
08/08/11 11:19:08
つ RegisterClass(Ex) の戻り値
つ GetClassInfo(Ex) で取得

282:デフォルトの名無しさん
08/08/11 13:52:41
   直接画面DCには描画せずにバックグランドのDCを介して描画する.
   1行または複数行,描画する場合はバックグランドDCに必要な文字を描画してから
   画面を無効にしてWM_PAINTでBitBltを使い描画させる.
のバックグラウンドDCとは何を指してるのでしょうか?
直接画面DCに描画するのと、バックグラウンドDCを介して描画するのとでは
どのような違いがあるのでしょうか?


283:デフォルトの名無しさん
08/08/11 13:57:47
それを書いた奴に聞けよ

284:デフォルトの名無しさん
08/08/11 14:08:40
メモリDC

285:デフォルトの名無しさん
08/08/11 14:34:55
>>283
掲示板の過去ログに載っていたので聞きようがありません。
>>284
今から調べてきます


286:デフォルトの名無しさん
08/08/11 15:54:00
ダブルバッファ とかそういう話か?
ちらつき防止でやってるだけ

直接DCに描画だと 消しているトコロ も目に見えちゃうからチラツク

287:デフォルトの名無しさん
08/08/11 19:45:18
GdiSetBatchLimitを上げればいいんでねーの?

288:デフォルトの名無しさん
08/08/11 21:36:18
>287

全然違うんじゃね?

GDI関数呼び出しをまとめて性能を上げるのと、一連の描きかけの絵を
バックバッファに描画しておいて描き終わったら前面をInvalidateRect
して(=WM_PAINT発生)からバックバッファから一気に転送(BitBlt)
するのでは見え方が違う。

>286 の言ってることが正解。さらに描画を1シーケンスで完了できない場合、
描画中の絵が見えないと言うメリットもある。

性能向上の方式ではないので性能あげたいならInvalidateRectの
範囲を描画更新したい場所に限定する必要があるし、そういうの
やりたいならGDIでなくDirectXで物理サーフィス×2面のFlipで
やるのが普通。


289:デフォルトの名無しさん
08/08/11 22:15:07
てか消してるところが見えるって何世代前のPCだよw

290:デフォルトの名無しさん
08/08/11 22:17:56
最新のPC

291:デフォルトの名無しさん
08/08/11 22:32:57
>289

最新のPCであっても、GDI関数で描画する時間は人間の一生のような
長い時間ってことが分からない素人かw

消しているトコロがリアルに人間に分からないように処理するには
液晶とグラボの垂直同期周期が60Hzとして、16.6666...msec 以内に
一連の描画処理を完了する必要があるけど?

もちろん一度もVSYNC跨がずに、だ。



292:デフォルトの名無しさん
08/08/11 23:24:41
一連の描画処理が16ms以上かかるってどんだけ重い描画なんだよ

293:デフォルトの名無しさん
08/08/11 23:30:17
でも、次の画面更新タイミングまでが偶々1msだったら・・・?

294:デフォルトの名無しさん
08/08/11 23:40:15
そんなの気にしなくていいよ、今時GDIなんてせいぜいコントロールの描画ぐらいしか使わないんだから

Windows標準のコントロールだって物によってはダブルバッファリングされてなくてちらつくけど誰もそんなの気にしてないし

295:デフォルトの名無しさん
08/08/11 23:42:13
>292

かかるでしょ。

・そのプロセスのプライオリティより高いスレッドやカーネルでの
 より優先度の高い処理が行われる場合。
・そのプロセスのプライオリティより低いスレッドが一定周期で
 ダイナミックブーストされる場合。
・そのプロセス自身が描画処理中に、HDD等の単一リソースにアクセスした場合。
・例えば1280x1024x32bit(フルカラー)の描画面(=5MBytes)をグラボに転送するのに、
 DMA転送が使えなかった場合。
・使えたとしても、メモリと他のデバイス間で先にDMA転送の帯域を食いつぶされていた場合。

いくらでもある。292がMS-DOSでシングルタスクのプログラマか、カーネルの設計者と
いうなら謝るよ。ここWin32API質問箱なので勘違いしてた。

293は「もちろん一度もVSYNC跨がずに、だ。」を読み取ってくれたね。



296:デフォルトの名無しさん
08/08/11 23:44:45
もういいよ

> 例えば1280x1024x32bit(フルカラー)の描画面(=5MBytes)をグラボに転送するのに
今時こんな描画にGDIなんて使わない

アンタだって暗にそう言ってるじゃん

> GDIでなくDirectXで物理サーフィス×2面のFlipでやるのが普通。

297:デフォルトの名無しさん
08/08/11 23:53:08
>>295
こういうKYがいるとテスト工程が無駄に増えるよなw

298:デフォルトの名無しさん
08/08/12 00:00:55
>>297

そうやってシステム見られない自称SEもいるね。
手戻り工数増えるんだよなw

後になって性能が出ない時に言い訳しないようにね。


299:デフォルトの名無しさん
08/08/12 00:09:35
文章から加齢臭がものすごいんですが・・・

300:デフォルトの名無しさん
08/08/12 00:11:58
WPF使えばちらつきなんか無縁

301:デフォルトの名無しさん
08/08/12 00:21:40
とっととCからWPF使えるようにしろと

302:デフォルトの名無しさん
08/08/12 00:25:25
つ MC++

303:デフォルトの名無しさん
08/08/12 00:25:46
ListViewのレポート形式で、表示領域が足りなくて
省略されて表示されているとき(例えば、あいう...)に、
その文字の上にカーソルを持っていくとツールチップが
表示されますが、これを無効に設定することはできない
のでしょうか?

304:デフォルトの名無しさん
08/08/12 00:36:49
>>303
出来る。

305:デフォルトの名無しさん
08/08/12 00:46:45
LVS_EX_INFOTIP,LVS_EX_LABELTIPあたりじゃない?

306:デフォルトの名無しさん
08/08/12 01:26:44
>>305
だと思うのですが、参考になるプログラムが
見つからなくて...

307:デフォルトの名無しさん
08/08/12 01:27:28
フラグの説明読んで書いてみりゃいいだろ
なんで自分から動こうとしないんだよ

308:デフォルトの名無しさん
08/08/12 01:28:02
>>306
普通にググれば見つかるのだが

309:デフォルトの名無しさん
08/08/12 10:19:12
LVS_EX_LABELTIP
Version 5.80.
If a partially hidden label in any list view mode lacks ToolTip text, the list-view control will unfold the label.
If this style is not set, the list-view control will unfold partly hidden labels only for the large icon mode.

別に複雑な操作がいる訳でもなし
このくらい試してみようぜ

310:デフォルトの名無しさん
08/08/12 10:57:03
CS_OWNDCにしたときに増えるメモリってどれくらい?
猫でもをみたらちょっとだけメモリを消費するって書いてあったけど
タスクマネージャを見たけどあんまり変わってないっぽいけど

311:デフォルトの名無しさん
08/08/12 11:38:05
見たまんまだ
確認したならそれを受け入れろ

312:デフォルトの名無しさん
08/08/12 13:35:46
640KBで動く時代からあるAPIdsと説明がそういう風になることもあるw

313:デフォルトの名無しさん
08/08/12 13:40:12
TextOut関数で背景を部分的に変える関数等ありますでしょうか?

314:デフォルトの名無しさん
08/08/12 15:00:59
たかだが背景色だけ変えるなら
SetBkMode で OPAQUE 指定
{ SetBkColor して TextOut } を変えたい単位で分割呼び出し

複雑な背景をどうこうしたいなら
SetBkMode で TRANSPARENT 指定
先に背景を描画しきって
TextOut

315:デフォルトの名無しさん
08/08/12 15:58:29
ShowWindowをAdvancedWindowsのやつでAPIフックしたらアドレス違反になるんだけどなんで??
全プロセスにDLLにして注入ではなく、自プロセスのフックのみでやってる。適当なexeにDLLにして注入してもやっぱり違反。
他のAPIはフックできてる。環境はBCBなんだけど。


316:デフォルトの名無しさん
08/08/12 19:08:36
WriteProcessMemoryでやれ。権限もクリアしていて、それでできなきゃアドレス間違っている。メモリ覗いて確認しろ。

317:デフォルトの名無しさん
08/08/12 20:00:27
>>316
俺VirtualProtectでやってるんだけど
WriteProcessMemoryのほうがいいわけ?

318:317
08/08/12 20:01:46
>>315
その事象で俺が経験した事といえばスタックオーバーフロー

319:デフォルトの名無しさん
08/08/12 20:38:48
どうせエラー値確認していないんだろ

320:デフォルトの名無しさん
08/08/12 21:30:16
アドレス違反で落ちてたらエラー値も何も無いだろ

321:デフォルトの名無しさん
08/08/12 21:58:43
だから何でVirtualProtectのエラーチェックしないの?ゆとり?

322:デフォルトの名無しさん
08/08/12 22:01:10
書き込みでAVになるか、書き換えた関数が呼ばれた時例外発生するか質問者ははっきりさせないといかんな。

323:317
08/08/12 22:09:50
>>321
俺別にエラーチェックしてないとは一言も言ってないんだがwwwww

>>320の言ってる通りアドレス違反で落ちてるんだから・・・・・


多分だけどやっぱ>>315はスタックオーバーフローしてるんじゃない?
GetProcAddressもあわせてAPIフックしてるならその辺を睨んだ方がよさげ
つーかコード掲示するかAdvancedWindowsのページがわからないと
これ以上なんともいえない

324:デフォルトの名無しさん
08/08/12 22:27:47
呼び出し規約かw

325:デフォルトの名無しさん
08/08/13 10:19:47
Ollyか何かで追跡してみれば

326:デフォルトの名無しさん
08/08/13 11:24:58
エディットコントロールの文字列選択の処理ってどうなっているのですか?
どうやって選択範囲を計算してるのですか?

327:デフォルトの名無しさん
08/08/13 11:37:19
GetTextExtentPoint

328:315
08/08/13 12:55:18
コードも例外発生の場所も書いてなくてスマン。
なのに原因を見抜けるってのはもうすげぇな、感謝!例外は置き換えた関数が呼ばれたときにおきてた。
きちんとstdcallだってのを置き換え関数で宣言したら、うまく動くようになった。
BCBとかdelphiは標準だとcdeclとかfastcallとかだったっけ。
とにかくみんなサンクス!!


329:デフォルトの名無しさん
08/08/13 15:10:46
>>327
キャレット位置をどうやって計算しているかわかりますか?

330:デフォルトの名無しさん
08/08/13 15:26:17
一文字ずつ幅を足していく

331:デフォルトの名無しさん
08/08/13 15:34:53
WM_LBUTTONDOWN
クリック位置x.y座標取得
GetTextExtentPoint32関数で得られた文字列のサイズと比較していく、って事ですか?

332:デフォルトの名無しさん
08/08/13 19:09:19
GetTextExtentExPointを流用してもいいけど

333:デフォルトの名無しさん
08/08/13 20:11:50
あるアプリのタブコントロールを別のプロセスから変化させたいのですが
別プロセスからTCM_SETCURSELをSendMessageすると、タブの位置は
変化するものの、TCN_SELCHANGEなどの通知メッセージがアプリ側で
発生しないので、肝心の内容が置き換わりません。
仕方なく、別プロセスから続けてWM_NOTIFYを発生させる事を考えたのですが、
別プロセスからでは構造体(NMHDR)を渡すようなメッセージは
伝わらない様です。
別プロセスからうまくタブが変化した事を通知する方法はないでしょうか。

該当コード
SendMessage(htab, TCM_SETCURSEL, 3, 0);
{ NMHDR nmhdr;
nmhdr.hwndFrom = htab;
nmhdr.idFrom = GetDlgCtrlID(htab);
nmhdr.code = TCN_SELCHANGE;
SendMessage(hmain, WM_NOTIFY, GetDlgCtrlID(htab), (LPARAM)&nmhdr);
}


334:デフォルトの名無しさん
08/08/13 20:29:33
VirtualAllocEx
WriteProcessMemory

335:デフォルトの名無しさん
08/08/13 20:41:43
sendinputを使おうと思って検索したらこんな2種類の書き方が出てきました。

lpKey->type = INPUT_KEYBOARD;

inputKey[cnt].type = INPUT_KEYBOARD;

この -> と [ ].type はどう違うんですか?

336:デフォルトの名無しさん
08/08/13 20:53:59
>>335
C言語スレ池

337:デフォルトの名無しさん
08/08/13 21:30:56
ステータスバーの文字の色を変えるにはどうすればよいですか?

338:デフォルトの名無しさん
08/08/13 21:38:25
MSDN読め

339:デフォルトの名無しさん
08/08/13 21:56:25
>>336
分かりました。

340:デフォルトの名無しさん
08/08/13 22:14:10
>>334
ありがとうございます。
できました。
かなり泥臭いですね・・

341:デフォルトの名無しさん
08/08/14 07:25:29
BitBltする大きさが少し違っただけで、いきなり速度が変わるんですが、なんか理由があるんですか。
あとディスプレイを2つつないでる環境でも、速度が結構落ちるんですが。

342:デフォルトの名無しさん
08/08/14 07:31:47
そりゃそうでしょうね

343:デフォルトの名無しさん
08/08/14 07:54:37
ヒントでもいいから教えて

344:デフォルトの名無しさん
08/08/14 08:11:23
おっ
典型的ゆとり発言

345:デフォルトの名無しさん
08/08/14 09:15:43
知らないならレスしないでください

346:デフォルトの名無しさん
08/08/14 09:52:15
自己解決しました
ありがとうございました

347:デフォルトの名無しさん
08/08/14 11:19:44
間違ってました
やっぱり教えてください

348:デフォルトの名無しさん
08/08/14 14:55:53
教えてもいいが
気に入らない態度がお前の

349:デフォルトの名無しさん
08/08/14 15:50:41
知らないならレスしないでください

350:デフォルトの名無しさん
08/08/14 17:42:44
自己解決しました
ありがとうございました

351:デフォルトの名無しさん
08/08/14 18:46:37
標準入力にデータが存在するかを調べるにはどうすれば良いでしょうか。

_kbhitやPeekConsoleInputを試してみたのですが、リダイレクトされた場合に機能しないようです。
CreateFileでOVERLAPPEDが使えるかとも思ったのですが、Consoleでは無視されると説明されていて
実際試してもうまくいきませんでした。

352:デフォルトの名無しさん
08/08/14 19:22:58
そういうときには実際に読んでみればいいんだよ。

353:デフォルトの名無しさん
08/08/14 19:41:47
DialogBoxやCreateDialogから行くcallback関数に変数等を渡す場合
はグローバルで宣言しておくしかないですか?

354:デフォルトの名無しさん
08/08/14 19:48:42
>>353
DialogBoxParam・CreateDialogParamの初期値で適当な構造体のポインタでも渡しとけ

355:デフォルトの名無しさん
08/08/14 20:00:22
>>352
申し訳ありません、情報が足りませんでした。
入力がない間は他のことをしたいのです。

356:デフォルトの名無しさん
08/08/14 20:04:00
スレッド分けれ

357:デフォルトの名無しさん
08/08/14 20:05:00
>>354
出来ました。ありがとうございます

358:デフォルトの名無しさん
08/08/14 20:20:26
>>356
元が*nixなコンソールプログラムの処理中に、
出来るだけ手を加えずにほんのちょっと通信したかっただけなんで
スレッド分けとかソケットは遠慮していたのですが、やはりそこまでやらないと駄目ですかね。

シグナルとかあればそれでもいいのですが。

359:デフォルトの名無しさん
08/08/14 20:40:50
Win32APIをC++でラッパしたフリーのライブラリ
でお勧めのものがありましたら教えて下さい.


360:デフォルトの名無しさん
08/08/14 20:44:41
Boost

361:デフォルトの名無しさん
08/08/14 20:53:10
URLリンク(msdn.microsoft.com)
これとか?

362:デフォルトの名無しさん
08/08/14 21:08:18
WTLを勧める

363:359
08/08/14 21:57:02
ありがとうございます。
自作ライブラリの参考にしたいので、
単純で解析しやすいのは無いでしょうか?

eGUI++は、相当頑張ればなんとか読めそうでしたが、
WTLの方は[!endif]とか変な記号があってわかりませんでした。


364:デフォルトの名無しさん
08/08/14 22:00:52
へ?俺が見た限り、WTLに[!endif]なんて存在しないけど・・・

365:デフォルトの名無しさん
08/08/14 22:39:08
>>359
STLSoft

366:デフォルトの名無しさん
08/08/14 23:43:56
>>363
[!endif]はVSのプロジェクトテンプレートだろうがw

367:359
08/08/15 08:00:34
Win32APIとなんらかのC/C++コンパイラ・リンカ
があれば使えるようにできるといいなと思います。

つまり、リソースは使わずに、
マクロも極力避けるという感じで。

STLSoftも良さそうですね。


368:デフォルトの名無しさん
08/08/15 11:32:16
Perl.

system ('notepad.exe','abcde.txt');

↑これでメモ帳が開けるんだけど、
win32APIの観点から、なにか
アドバイスはありませんか?

369:デフォルトの名無しさん
08/08/15 11:42:45
ありません

370:デフォルトの名無しさん
08/08/15 12:23:23
何を求めてるのか具体的に書かんと分からんよ
アドバイスって何よ

同じ事をしたいだけならShellExecute

371:デフォルトの名無しさん
08/08/15 13:47:36
Perlは便利というアドバイス

372:351
08/08/15 22:39:32
自己解決しましたので報告します。

GetStdHandleなどで得たハンドルを直接WaitForSingleObjectに入れることが出来ます。
ただしそのままではKeyDownだけではなくKeyUpでもシグナル状態になってしまうため、
WaitForSingleObject+ReadFileまたはWaitForSingleObject+ReadConsoleの組み合わせだけではブロックします。

FlushFileBufferやCancelIOではキーボードイベントをフラッシュする事が出来ず、
他にフラッシュできそうなAPIを見つけることが出来ませんでしたので今回は採用を諦めます。

どうしても直接入力/リダイレクト両対応でノンブロッキングな標準入力を行いたい方は
シグナル状態になった際にPeekConsoleInputで無関係なシグナルを検出し、
その時だけReadConsoleInputでイベントを取り除いてください。
>>356さんの言うようにスレッド化するのも手だと思いますが、ブロックするのでスレッドを終了できなくなるはずです。

373:デフォルトの名無しさん
08/08/15 22:48:15
別にスレッド終了せんでもええやん?

374:デフォルトの名無しさん
08/08/16 01:25:25
CreateThreadまたは__beginthreadexを使用する時に
指定するスタックサイズは皆さん「0」指定で使ってますか?

通常は「0」で問題は無いのでしょうが
もし仮に明示的なスタックサイズを指定している方がいれば
その利点などについて詳しく教えてもらえるとうれしいです。


375:デフォルトの名無しさん
08/08/16 01:46:41
0って言ってもデフォルトサイズを使うって指定しているんだから、サイズによって何が変化するか自分で考えろよゆとり馬鹿

376:デフォルトの名無しさん
08/08/16 01:49:05
・デフォルトのスタックサイズでは足りない場合に増やす
 スタックがあふれるようなアルゴリズムが悪いんだが、やむを得ない場合があるかもしれない

・スタックを減らしてアドレス空間を節約する
 スレッドを大量に作るとき、スレッド1個ごとに何MBも取ってると、アドレス空間の枯渇が早い

という利点は思いつくが、今のところ俺は0以外を指定したことはない

377:デフォルトの名無しさん
08/08/16 04:24:02
STACK_SIZE_PARAM_IS_A_RESERVATION が指定できない2000以前じゃデフォルトより下げても意味なかったし0以外ねーな

378:デフォルトの名無しさん
08/08/16 04:51:04
64bitコードならともかく、32bitコードじゃスタックサイズを増やすのはまずねーだろ。
アドレス空間足りねーよ。

379:デフォルトの名無しさん
08/08/16 12:18:14
デフォルトで1MBくらいなんだから、スタックサイズちょっと増やしたくらいでアドレス空間足らなくはならんだろ。

380:374
08/08/16 12:24:45
>>375-379
回答ありがとうございます。


>>376の言うとおりスタックを減らしてアドレス空間の
節約をした方がいいのか迷っていたので、
ほかの人の意見を聞いてみようと思って質問しました。


スレッドのスタックサイズに関しては特に意識する必要は無いという事ですね。

381:デフォルトの名無しさん
08/08/16 12:50:42
質問です。。。

現在keybd_eventを使用して実際のキー操作をシミュレートしようとしているのですが,

keybd_event( 'A', 0, 0, 0 );

のようなコードでは,実際にAをずっと押しているときのように,動作しません。
(例えば,テキストエディタをアクティブにしていたらAがいくつも入力される。


どうしたら,実際のキーボードを押しているように動作させることが出来るのでしょうか?

382:デフォルトの名無しさん
08/08/16 12:54:08
スタック領域って減らせるのか?
最初は4KBぐらいしか確保されてなくて必要に応じて動的拡張されるとかじゃなかったっけ?

383:デフォルトの名無しさん
08/08/16 14:27:15
GetOpenFileNameのダイアログ使ってるとMAX_PATH超えられないけれど
対策もしくは代替手段て有りますか?

384:デフォルトの名無しさん
08/08/16 15:13:42
ダイアログを自作する

385:デフォルトの名無しさん
08/08/16 17:02:35
perlで
ShellExecuteで、
notepad.exeを開きたい場合は
どう書けばいいの?

386:デフォルトの名無しさん
08/08/16 17:14:04
`notepad.exe`


387:デフォルトの名無しさん
08/08/16 17:18:04
>>386
試してみたら、確かにメモ帳が開きましたが、
それってShellExecuteで開いてるの?

388:デフォルトの名無しさん
08/08/16 21:23:53
>>383
フックプロシージャの中からだとそういう制限は無かった気がする。
違ったらごめん。

>>387
ShellExecuteの中の人は、拡張子exeの関連付けに従ってプロセスを起動する。
何も特別なことはない。

389:デフォルトの名無しさん
08/08/16 21:52:03
>>387
どういうAPIを使ってるのかは、それが仕様化されてるのでなければ
処理系の実装依存だろうな。

直接ShellExecuteを呼びたいのなら
ActivePerl Win32 API ShellExecute
とかでググれ。
それでわからなければPerlの人に訊け。

390:デフォルトの名無しさん
08/08/16 22:55:06
今の状況だと、
真っ黒なDOSプロンプトが開いて、
そのDOS窓が残ったままで、
メモ帳も開く、という動作なのですが、
DOS窓が開かないで、
あるいは一瞬だけ開いて、
それでメモ帳が開く、というのを
するのに、shellexcuteを使えば
いいんでない?と思ったのですが、
違いますか?

391:デフォルトの名無しさん
08/08/17 00:09:09
コマンドプロンプト経由で起動する事情なんざ、Win32的には知ったこっちゃないな。
Perlが勝手にやってることなんだから、あっちで聞け。

392:デフォルトの名無しさん
08/08/17 06:24:19
やだね
お前が勝手に聞いてろ

393:デフォルトの名無しさん
08/08/17 09:20:57
perlをWindowアプリとしてリコンパイルすれば解決する

394:デフォルトの名無しさん
08/08/17 10:40:24
perlネタはもういいよ。

395:デフォルトの名無しさん
08/08/17 13:01:22
perlがコンソールアプリだからだろ
active perl scriptを使えばいい

396:383
08/08/17 13:34:18
>>388
フックプロシャージャ作って中でCDM_GETFILEPATH使っても
MAX_PATH以下になるようになってるみたいです。

CDM_GETFOLDERPATHやCDM_GETFOLDERIDLISTだと
フォルダまでがMAX_PATHであれば選択ファイル名を追加で
その分超えることは出来るみたいですがOKボタン押させて貰えない。

さらに深いフォルダにはアクセスさせてもらえないし
他の大半のアプリも触れない領域じゃ独自ダイアログにするほどのことでもない気がするので諦めます。
あとD&Dもメッセージが飛んでこないので駄目みたいです。

397:デフォルトの名無しさん
08/08/17 14:36:47
なんか知らんがUnicodeに汁

398:デフォルトの名無しさん
08/08/17 16:18:46
>>381

399:デフォルトの名無しさん
08/08/17 17:07:58
>>381
チート厨は氏ね

400:381
08/08/17 17:31:50
>>399
Wiiリモコンをパッドにしたいだけなのに。。。

401:デフォルトの名無しさん
08/08/17 17:33:55
>>400
それでもBAN対象のゲームは多いはず

402:デフォルトの名無しさん
08/08/17 18:05:19
>>400
ヒント
っKEYEVENTF_KEYUP

403:383
08/08/17 18:08:46
>>397
長いファイル名は必然的にUnicode関数使うし
最近のプログラムなんでUnicodeビルドしてる。

404:デフォルトの名無しさん
08/08/17 19:39:11
シェル関数(SHGetPathFromIDListなど)がMAX_PATHを超えれないから
シェルに依存しているコモンダイアログも必然的にMAX_PATHを超えられないのだろう

てかMAX_PATHを超えてしまうほど深い階層にファイル置くなよ

405:デフォルトの名無しさん
08/08/17 19:57:28
ThickFrame(ウィンドウサイズを変更する枠)で、
「ユーザーがウィンドウサイズを変更している間は、WM_ERASEBKGNDメッセージを無効にする」
という処理を加えたいんですけれど、

処理の開始は、WM_NCLBUTTONDOWNメッセージを捕まえてそれで問題ありませんでした。

処理の終了(サイズ変更の終了)も、同様にWM_NCLBUTTONUPメッセージを捕まえれば良いのかと思ったんですが、
うまくいきませんでした。


この場合の、「ウィンドウサイズ変更が終了した」という情報を、
アプリケーションが取得するにはどうしたら良いでしょうか?

誰かご存知の人は教えてください。


406:デフォルトの名無しさん
08/08/17 20:03:49
WM_SIZEとかWM_WINDOWPOSCHANGEDとか?

407:デフォルトの名無しさん
08/08/17 22:22:33
>>402
KEYEVENTF_KEYUPを引数としてキーが上がったということも書いているのですが,
>>400のやりたいことのように出来ません。。。

408:デフォルトの名無しさん
08/08/18 01:09:41
初歩的な事で申し訳ないのですが、
実行ファイルのアイコンが指定通りに変わらず困っています。
WINDCLASSEX構造体には以下のように記述しています。

wcex.hIcon=(HICON)LoadImage(hInst,"ファイル名",IMAGE_ICON,
              0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
です。
リソースを使わずicoファイルにパスを通す方法で実現したいのですが、
表示されません。
hIconもNULLではない様なので問題ないと思うのですが・・・。
因みに、タイトルバーに表示される方は上手く表示されています。
ですので、ファイル名の指定でパスがおかしいということはないと
思います。

409:デフォルトの名無しさん
08/08/18 01:35:39
WNDCLASS(EX)というのは、ウィンドウの設定をするだけ
実行ファイルのアイコンとかは何も変わらない

410:デフォルトの名無しさん
08/08/18 03:10:32
>>408
exe のリソースに埋め込まれたアイコンの中で
一番番号の若い物が exe のアイコンになります

411:デフォルトの名無しさん
08/08/18 03:49:06
>>409
そうだったんですか・・・。
前は普通にリソースで入れてたんで、気づきませんでしたが
そこに指定したらアイコンになるもんだと思ってました・・・。
>>410
409の方のを読んで色々と調べていたんですが、
やっぱり、リソースを埋め込むものなんですね。
>一番番号の若い物が exe のアイコンになります
知りませんでした・・勉強になります。

おかげさまで一応解決しました。

412:デフォルトの名無しさん
08/08/18 07:58:09
常駐型アプリを作ってます
タスクバーに表示されず
タスクトレイにアイコンを表示させるとこまできましたが、
タスクマネージャ-アプリケーションで見ると
タスクの欄にしっかり表示されてしまいます

他のアプリを見るとここには表示されていません
タスクマネージャ-アプリケーションに表示されないように
常駐アプリを作るにはどうすればいいですか


413:デフォルトの名無しさん
08/08/18 09:32:48
ウィンドウが出てるんだろ

414:デフォルトの名無しさん
08/08/18 17:26:55
ヴィザードで、自動で次のページに移行したいんですけれど、

PSHNOTIFY myLp={NULL,};
myLp.hdr.code = PSN_WIZNEXT;
SendMessage(hDlg,WM_NOTIFY,NULL,(LPARAM)&myLp);

↑のコードじゃ駄目なんですかねぇ??


case WM_NOTIFY:
 LPPSHNOTIFY lppshN = (LPPSHNOTIFY)lp;
 switch (lppshN->hdr.code){
 ...
 }

↑のコードで、「戻る」「次へ」等のメッセージは取得できるので、
同様のメッセージを送ってみたのですが・・・。


ウィザードで、自動で次のページに移行させる方法
(「次へ」ボタンを押した場合と同じ効果を出す方法)
をご存知の方、ご教授下さい。

415:デフォルトの名無しさん
08/08/18 17:53:07
>>414
MSDN読め

416:デフォルトの名無しさん
08/08/18 19:12:39
>>407
入力送信後にSleep(100);とかしたらどうかに?

417:デフォルトの名無しさん
08/08/18 21:51:40
>>414
WM_COMMAND投げたら?

418:デフォルトの名無しさん
08/08/18 22:37:30
>>416
いれてみましたがだめでした><

419:デフォルトの名無しさん
08/08/18 23:03:29
PC再起動すると動く場合がある

420:デフォルトの名無しさん
08/08/18 23:12:33
>>419

421:デフォルトの名無しさん
08/08/19 13:21:09
>>419

422:デフォルトの名無しさん
08/08/19 13:30:32
PCを起動すると動く場合がある

423: ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
08/08/19 13:33:11

    / ̄ ̄ ̄ ̄\
   (  人____)
   |./  ー◎-◎-)
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄


424: ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
08/08/19 13:57:04
    / ̄ ̄ ̄ ̄\
   (  人____)
   |./  ー◎-◎-)
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

425:デフォルトの名無しさん
08/08/19 23:53:51
別exeで動いているTimerを停止させるAPIはないでしょうか?
またはタイマーIDかタイマー識別子を取得する方法があれば
KillTimerできるのでしょうけど・・・


426:デフォルトの名無しさん
08/08/19 23:58:51
>>425
APIフック

427:デフォルトの名無しさん
08/08/20 00:02:40
タイマIDはプロセスごとに独立してる

428:デフォルトの名無しさん
08/08/20 00:03:23
char* str = "aあbい";

みたいに1バイト文字とマルチバイト文字が入り交じった文字列を、
1文字ずつのcharの固まりに分解したいんですが、
IsDBCSLeadByte でcharを1つずつ調べていくしかないでしょうか?

429:デフォルトの名無しさん
08/08/20 00:17:09
>>425

別プロセスから、
タイマ停止させるためのメッセージ投げる。
それ受けたらタイマを止める。


430:デフォルトの名無しさん
08/08/20 00:19:00
SJISならググって文字コード表見ながら自作
あるいはWideCharToMultiByteして1文字ずつMultiByteToWieeChar

431:デフォルトの名無しさん
08/08/20 00:20:58
>>428
CharNextExA / CharPrevExA とか?

432:デフォルトの名無しさん
08/08/20 00:35:28
>>430
>>431
どうもありがとうございます。
ググってみたところ、どっちも使えそうです。

>>430 はWideCharToMultiByteとMultiByteToWieeChar 逆ですよね。

433:デフォルトの名無しさん
08/08/20 02:28:26
事務より簡単で誰でもできる仕事なのに時給は技術者!
ITテスターで稼ぐための情報を交換するスレです。

☆派遣先は大企業じゃないと駄目です。中小だとテスターもプログラムの仕様が
 わからないといけないとかテストプログラムを書けとか言われちゃいますよ。
 大企業ならプログラムを触るだけのテスターでも大丈夫。

☆派遣先ではテスターはプログラムを触るだけでいい、
 そんな空気を作っていきましょう。仕様書読んでください、
 とか言われたら「なんでテスターが仕様書読むんですか」って食い下がって。
 プログラムの仕様書を読んだり、テストの仕様書を書いたりするのは大変ですよ。

☆普通にプログラムを触ってテストしてると、何をテストしているのかわからない、
 とか言い出す人、いるんですよ。プログラマとかってこういう人多いです。
 そういう人は上司にあることないこと告げ口して追い出しちゃいましょ。
 人事権のある人とは仲良くしておくことが大切。
 
☆納品して何かあったら大変だからとプログラムの仕様書を読んだり、
 テスト仕様書を書いちゃうテスターがいますけど、
 こっちもやることになるからすごく迷惑。
 テスト結果の責任は担当の正社員にありますよね。
 納品後のクレームは最終チェックを怠った正社員が悪いんだから
 派遣は関係ないです。 

434:デフォルトの名無しさん
08/08/20 02:32:01
cp932->utf16->cp932なんて処理をすると元の文字に戻らなくてはまるかも

435:デフォルトの名無しさん
08/08/20 03:06:31
wave dash とか?他何があったっけ?

436:デフォルトの名無しさん
08/08/20 03:24:13
いいかげんシフトJISを捨てようぜ。

437:デフォルトの名無しさん
08/08/20 04:24:17
>>436がまずやるべきは2ちゃんねるを捨てるところからだな

438:デフォルトの名無しさん
08/08/20 07:00:22
>435
すくなくても、WaveDashは戻る。ここがWin32API質問箱である以上は。

439:デフォルトの名無しさん
08/08/20 07:17:19
↑話を理解してない馬鹿

440:デフォルトの名無しさん
08/08/20 07:26:08
TextBoxでフォームが非アクティブになってもキーボードフォーカスを
常に持ち続けるにはどうすればいいでしょうか。

441:デフォルトの名無しさん
08/08/20 07:46:26
>435
URLリンク(support.microsoft.com)

442:デフォルトの名無しさん
08/08/20 10:09:22
とあるVC++のプログラムを引き継いだのですが
スレッドの作成にCreateThreadが使用されていました。
スレッドはひとつしか作成されないのですが
そういう場合ならCreateThreadでもよいでしょうか?
_beginthreadに修正したほうがよいでしょうか?

443:デフォルトの名無しさん
08/08/20 10:14:14
内容による。
それだけで他人が判断できると思っているのなら、ヘルプの読み込みが全く足りない。

444:デフォルトの名無しさん
08/08/20 10:18:13
ヘルプを読み込んでみたところ問題ないようです。
ありがとうございました。

445:デフォルトの名無しさん
08/08/20 12:26:29
CRTを一切使っていないなら(実際には使っても問題の無いCRTもあるが)
CreateThreadでもいい。

446:デフォルトの名無しさん
08/08/20 12:30:19
CRTバリバリ使ってます

447:デフォルトの名無しさん
08/08/20 12:47:32
DLL版にリンクすれば問題ない

448:デフォルトの名無しさん
08/08/20 13:08:50
お世話になります。
wininetのFindFirstUrlCacheEntryで、特定のキャッシュを探す場合、
第一引数のlpszUrlSearchPatternにどういったものを渡してやればいいのでしょうか。

URLリンク(msdn.microsoft.com)(VS.85).aspx (FindFirstUrlCacheEntry)

URLリンク(support.microsoft.com)
現状は、これを見ながらDeleteUrlCacheEntryの所を書き変えて検索していますが、
lpszUrl~にURL文字列を直接渡してもnullを渡したときと動作が変わらず、毎回同じ順番で検索されてしまいます。
一応、言語はC#です。

449:440
08/08/20 13:56:17
すみません。言語別スレに行きます。

450:デフォルトの名無しさん
08/08/20 20:21:51
>>448
This parameter can only be set to "cookie:", "visited:", or NULL.

451:デフォルトの名無しさん
08/08/20 22:12:17
>>450
日本語でおk

452:448
08/08/20 22:59:26
>>450
ということは基本的に全数で探すしかないってことですか・・・。
それほど時間はかからないみたいなのでとりあえずこのままでいきます。
ありがとうございました。

453:デフォルトの名無しさん
08/08/21 00:30:00
C++でウインドウをクラスで実装してみてるのですが、コンストラクタ内にウインドウ生成のコードを書いてしまうのはアリでしょうか?教えてください。

454:デフォルトの名無しさん
08/08/21 01:41:28
サービスプログラムとしてタスクトレイに常駐するプログラムを
作成してるのですが、ユーザーがログインした段階で
Windowを作成しないと、コントロールなどの表示が崩れてしまうようです。
ユーザーがログインているかどうかを判定する方法があれば教えてください。
Windows XPです。

455:デフォルトの名無しさん
08/08/21 07:10:57
>>454
もしかして一つのプログラムで全部やるつもりか?
HKLMのRunキーで起動したタスクトレイのプログラムがサービスと通信する、
というのが普通の作り方だと思うのだが。

456:デフォルトの名無しさん
08/08/21 08:25:06
>>455
WebやAPI本とかの断片的な知識しかないので
できればその普通のやり方が載っている情報源を知りたいのですが。
MSのセミナーとかですか?

457:デフォルトの名無しさん
08/08/21 09:27:11
今までWindowsを使ってきた経験からの普通

458:デフォルトの名無しさん
08/08/21 09:32:29
>>453いいんじゃね?

459:デフォルトの名無しさん
08/08/21 10:27:00
>>457
やっぱり知ったかでしたか。
関係ない話を始めた段階から読めてました。

460:457
08/08/21 10:31:51
オレは通りすがりだよ。
ちなみに、サービスはNT4の頃から作ってる。

461:デフォルトの名無しさん
08/08/21 10:48:25
はいはい。もういいよ。
ちなみに自己解決しました。

462:デフォルトの名無しさん
08/08/21 10:51:34
サービスが直接ウィンドウ作るのが普通だとしたら、
わざわざ「デスクトップとの対話を許可する」がデフォルトでオフになっているわけがない。

463:デフォルトの名無しさん
08/08/21 10:53:27
デフォルトって。プログラムからオンにできるわけだが。

464:デフォルトの名無しさん
08/08/21 10:54:14
URLリンク(www.google.co.jp)


465:デフォルトの名無しさん
08/08/21 10:57:22
サービスそのものは誰もログオンしていなくても動作するもんだから
ウィンドウそのものを自分で作るようにはできてない。
無理やり後付けで作るのは勝手だが、普通じゃない。

466:デフォルトの名無しさん
08/08/21 10:58:44
そもそもレジストリいじるだとか別プロセスにするだとか、
完全に知ったかの妄想なんだよ。


467:デフォルトの名無しさん
08/08/21 11:01:26
VNCとかはどうなってんの?

468:デフォルトの名無しさん
08/08/21 11:15:35
なんか知ったかという言葉を使いまくってる真性がいるなw

469:デフォルトの名無しさん
08/08/21 11:16:03
人格攻撃キター

470:デフォルトの名無しさん
08/08/21 11:37:29
お前ら前置きに反応しすぎ

ユーザーがログインているかどうかを判定する方法があれば教えてください。


471:デフォルトの名無しさん
08/08/21 11:47:32
ターミナルサーバーとかで、複数同時にログインしてるのも考慮?

472:デフォルトの名無しさん
08/08/21 11:54:22
GetDesktopWindow()でデスクトップが取れたらでいいんじゃね?

473:デフォルトの名無しさん
08/08/21 11:55:57
ユーザーセッションの数が1以上、とかでいいのかなあ。
試さないとなんとも言えんな。

474:デフォルトの名無しさん
08/08/21 11:56:11
>>470
サービスでって前提なかったら、GetUserNameでイイジャンって言われちゃうぜ?w

試してないけど、NetUserEnumで列挙してNetUserGetInfo
USER_INFO_2の最後のログオン/ログオフの時間取得してとかかなぁ

475:デフォルトの名無しさん
08/08/22 00:32:43
サービス語るならせめてAdvancedWindowsと
プログラミングMicrosoft Windows 2000位読め
なぜWindowを持つサービスを作るべきでないかは読めば分かるから

476:デフォルトの名無しさん
08/08/22 08:05:36
知らないならレスしないでください

477:デフォルトの名無しさん
08/08/22 11:48:40
知ってるよw

478:デフォルトの名無しさん
08/08/22 11:51:32
じゃあレスしてください

479:デフォルトの名無しさん
08/08/22 14:40:46
誰もサービスについての質問なんかしてないのに

480:デフォルトの名無しさん
08/08/22 14:48:06
>>454

481:デフォルトの名無しさん
08/08/22 15:29:09
>>480
> ユーザーがログインているかどうかを判定する方法があれば教えてください。
これが質問内容だろ
「サービスについての質問」ではない

日本語が読めない奴は黙ってろ

482:デフォルトの名無しさん
08/08/22 15:31:30
サービス以外でユーザーがログインしているかどうかを知る必要はない。
だってログインしているから

483:デフォルトの名無しさん
08/08/22 16:36:43
クレデンシャルプロバイダやGinaモジュールでも取得したい場合はあるかも?

484:デフォルトの名無しさん
08/08/22 20:56:09
explorer.exeのプロセスが居たらログオン中でいいんじゃね?

485:デフォルトの名無しさん
08/08/22 21:18:48
>>484
ばーか

486:デフォルトの名無しさん
08/08/22 21:32:56
>>485
なにが?w

487:デフォルトの名無しさん
08/08/22 21:43:41
>>484の回答が馬鹿丸出しということ

488:デフォルトの名無しさん
08/08/22 22:05:08
あ~あ、
>>485は反例を一つ示せば>>484を完全否定できたのにね

これじゃ>>485の方が馬鹿に見える

489:デフォルトの名無しさん
08/08/22 22:06:37
顔真っ赤ですよ

490:デフォルトの名無しさん
08/08/22 22:10:44
>>482
そのプログラムをタスクスケジューラに登録する場合はどうかな?

491:デフォルトの名無しさん
08/08/22 22:26:00
>>490
タスクスケジューラは設定されたアカウントでログオンするよ。

492:デフォルトの名無しさん
08/08/22 22:34:00
>>484
ユーザーのログインシェルがexplorer.exe以外の場合がある、
とか聞いたことある気がするけど、そんなケース無視しても良い気がするし。
>>484の方法でダメな場合って他に何かあったっけ。


493:デフォルトの名無しさん
08/08/22 22:48:47
explorer.exeが異常終了したとき

494:デフォルトの名無しさん
08/08/22 23:21:25
そもそもログインしているユーザの一覧なんて
権限さえあれば取得できないわけがないと思うんだけど。

495:デフォルトの名無しさん
08/08/22 23:32:58
なんか知らんが、たぶんOSごとに違うと思う

496:デフォルトの名無しさん
08/08/22 23:34:44
Windows TIPS 現在ログオン中のユーザー名を調べる
URLリンク(www.atmarkit.co.jp)

プログラムでやる場合、やはりexplorer.exeの有無ぐらいしかないのかね?


497:デフォルトの名無しさん
08/08/22 23:51:24
GetCharABCWidths()で取得されるA寸法は、 GetGlyphOutlineで取得されるGLYPHMETRICSのgmGlyphOrigin.xとは違うものなんでしょうか?
説明を読むと同じに見えるけど、違う値が返ってきて混乱してます。

498:デフォルトの名無しさん
08/08/23 00:03:54
>>497
アンダー・オーバーハングに対応した文字だと違ってくるんじゃないかな。

499:デフォルトの名無しさん
08/08/23 00:46:12
>>493

異常終了したらwinlogon.exeがexplorer.exeを再起動するぞ。


500:デフォルトの名無しさん
08/08/23 00:47:42
>>499
タスクマネージャで終了したら再起動しない

501:デフォルトの名無しさん
08/08/23 01:02:59
たまにその対策をしてない常駐アプリはタスクトレイから消えちゃうんだよな

502:デフォルトの名無しさん
08/08/23 01:19:26
俺が使ってる常駐アプリの中ではその対策をしてる方が少ないな

503:デフォルトの名無しさん
08/08/23 01:45:23
>>454 はユーザがログオンしてるかどうか判定したいと言ってるけど、
実際は通知領域の表示ができるかどうかの問題なわけよ。
だから、シェルとしてのexplorer.exeで判定するのが正しい。
あと、起動処理が終わったかどうか調べる必要があるのかもしれない。
WaitForInputIdle?

504:デフォルトの名無しさん
08/08/23 02:10:50
GetDesktopWindowだとどうなるんだろう。
ログオフ中はきちんとNULLが返るのかな?
適当な値が返ってきたらやだな。


505:デフォルトの名無しさん
08/08/23 02:49:50
>>503
それならShell_NotifyIconが成功するまで適当な間隔で何度も呼び出せばいいだろ
そもそもXP以降はそうしろとMSのサイトにも載ってるし、ログオンとか関係ない話になる

506:デフォルトの名無しさん
08/08/23 07:53:52
>>495
俺もなんか知らないけどWMIで取得できそうな気がする。

507:デフォルトの名無しさん
08/08/23 22:09:42
>>500

それはWindowsが異常終了として扱わない。
explorer.exeが異常終了した場合はwinlogon.exe(MSGINA.DLL)がWlxStartApplicationで検出する。
そこでSHELLとしてのexplorer.exeが再度起動される。






508:デフォルトの名無しさん
08/08/23 23:08:46
空行ウザイ

509:デフォルトの名無しさん
08/08/24 01:15:50








510:デフォルトの名無しさん
08/08/24 01:19:59







↑だからうぜーってば








511:デフォルトの名無しさん
08/08/25 18:46:42
しばらく放置しないと、感染症になる雰囲気だけど、
ミソギを兼ねて、つまんない質問を。

Debug バージョンで HeapFree() で落ちるのは、スタックなどの管理領域を
壊したからですか。一時メモリで取った領域でないところに書き込んでも、
運よく、そういう領域でないなら落ちませんか。それとも必ず落ちますか。

512:デフォルトの名無しさん
08/08/25 19:31:46
落ちますん

513:デフォルトの名無しさん
08/08/25 19:35:47
HeapAlloc/HeapFreeの管理するメモリ領域は
普通はDebugランタイムのチェック対象ではないが
DebugランタイムがAPIフックするような開発環境ならその限りではない

514:デフォルトの名無しさん
08/08/25 19:54:21
運がよければ落ちないかもね
しかし運に頼ってプログラミングするのはやめてもらいたい

515:デフォルトの名無しさん
08/08/25 20:09:50
Windows2000からは、ヒープにチェック機構が追加されたので、
バッファオーバーラン等は、ページ単位より細かくチェックが入るようになり、
HeapFree呼び出し時に例外(ブレークポイント)を発生させるようになった。

516:511
08/08/25 20:30:59
早速、有難うございました。
>>514
Xp & VC++6.0 では落ちてなかったのに、Vista & VC++2008EE でだめになったからネ。


517:デフォルトの名無しさん
08/08/25 23:51:30
ネットワーク接続時にタスクトレイに出すことの出来る
ローカルエリア接続等で出ている送受信の総量などは
APIなどで所得出来るものですか?もし出来る場合どのようなAPIで可能
でしょうか?

518:デフォルトの名無しさん
08/08/26 00:13:06
休止やスリープから戻ってくるとアプリは起動しているけどパスワード入力画面という状態になってしまいます。
パスワード入力画面の最中は処理を行いたくないのですが、ログイン(?)したかどうかを調べることはできないでしょうか?

519:デフォルトの名無しさん
08/08/26 00:21:23
WTSナントカ

520:デフォルトの名無しさん
08/08/26 00:26:07
WM_WTSSESSION_CHANGE

521:518
08/08/26 00:35:22
ありがとうございます。これで解決できそうです。

522:デフォルトの名無しさん
08/08/26 07:17:55
>>517
URLリンク(www.geekpage.jp)


523:デフォルトの名無しさん
08/08/26 11:04:12
ユーザ名やパスワードなどの文字列を暗号化してINIファイルに書き込んだり、
それを取り出して複合したりといった処理を行いたいのですが、
なにかよいAPIやサンプルはありませんでしょうか。

524:デフォルトの名無しさん
08/08/26 11:15:08
CryptoAPI

525:デフォルトの名無しさん
08/08/26 11:17:04
サンプルは↓の右下の奴とか結構とっつき易い
URLリンク(www.trustss.co.jp)

526:デフォルトの名無しさん
08/08/26 15:08:12
APIじゃないかも知れないんですが、
MCEリモコン制御に対応させるためのsdkやらドキュメントの
手がかりってどの辺にありますでしょうか?

うまい検索単語が思いつかずに、開発とは関係ないページしか
引っかかりません

527:デフォルトの名無しさん
08/08/26 15:21:40
指定PCにpingして生存確認したいんですが、pingするAPIを教えてくださいよ

528:デフォルトの名無しさん
08/08/26 15:23:00
ずばりpingするようなAPIはないからググってサンプル見つけるんだ。

529:デフォルトの名無しさん
08/08/26 15:52:08
ああ、いやいや、どっかやりかた載ってるサイトを教えてくださいよ

530:デフォルトの名無しさん
08/08/26 15:57:19
CreateProcess+ping.exe

531:デフォルトの名無しさん
08/08/26 15:59:05
ああ、ping.exeとかそんなんじゃなくておねがいしますよ

532:デフォルトの名無しさん
08/08/26 15:59:55
>>527
DWORD PingToComputer(LPCTSTR HostAddress);

533:デフォルトの名無しさん
08/08/26 16:00:14
API関係ないがな
ICMP プロトコル あたりでググればサンプルあるだろう

534:デフォルトの名無しさん
08/08/26 16:00:33
IcmpSendEcho

535:デフォルトの名無しさん
08/08/26 16:04:27
IcmpSendEchoってまだ使えるのか・・・?

536:デフォルトの名無しさん
08/08/26 16:09:25
PFSDK windows server 2003 の IP Helper には
IcmpSendEcho 居て XP も可能と書いてある

最新のは知らない

537:デフォルトの名無しさん
08/08/26 16:11:05
なんだよお前らなんでそんなに優しいんだよ?
いつものお前ららしくないぜ?

>>532-536
とりあえずさんくす。
何かその辺を調べてみますわ

538:デフォルトの名無しさん
08/08/26 16:24:21
winsock2

539:デフォルトの名無しさん
08/08/26 16:25:23
URLリンク(www.geekpage.jp)

540:デフォルトの名無しさん
08/08/26 16:26:46
>>522>>539
宣伝ご苦労様です

541:デフォルトの名無しさん
08/08/26 16:26:59
URLリンク(www.kt.rim.or.jp)

542:デフォルトの名無しさん
08/08/26 17:50:12
>>526
URLリンク(download.microsoft.com)


543:デフォルトの名無しさん
08/08/26 21:38:10
>>522
おおお!ありがとうございます!

544:デフォルトの名無しさん
08/08/26 22:03:51
WM_CREATEの所に
{
 LPCTSTR lpszTxt = TEXT("猫でもわかるWindowsプログラミング");
 HDC hdc;
 hdc = GetDC(hWnd);
 TextOut(hdc, 10, 10, lpszTxt, lstrlen(lpszTxt));
 ReleaseDC(hWnd, hdc);
}
を張り付けても文字列が表示されないのはなぜでしょうか。

545:デフォルトの名無しさん
08/08/26 22:27:42
すぐに消えてしまうからです

546:デフォルトの名無しさん
08/08/26 22:39:23
WM_CREATEは作成中だったような

547:デフォルトの名無しさん
08/08/26 22:39:27
描画はWM_PAINTで

548:デフォルトの名無しさん
08/08/27 00:14:05
DLLインジェクションを使ってiexplore.exeに割り込んで
IAT書き換えでWSARecvとrecvをフックしてみたんだけど、
どうやらフック先の関数が呼ばれていないみたいなんだ。

MessageBox表示だけのプログラムに割り込んで
MessageBoxをフックするのは出来たんでインジェ
クション部分に問題はないと思うんだけど…。

なんかアドバイスもらえませんか?

参考にしたサイト
URLリンク(ruffnex.oc.to)


549:デフォルトの名無しさん
08/08/27 00:21:36
recvだのなんだのしてるのはMSHTMLとか下請けモジュールだろ?

550:デフォルトの名無しさん
08/08/27 00:30:39
つまり実際にrecvなりなんなりしてるモジュールに対して
Hookかけないとダメってことですか。


551:デフォルトの名無しさん
08/08/27 00:33:27
>>548
あまり関係無いけど、その人の書いたこれ
URLリンク(ruffnex.oc.to)
DllMainの中でLoadLibrary呼び出すコードを出力してたのを思いだした。

552:デフォルトの名無しさん
08/08/27 00:36:18
GetProcAddressで直接呼んでるのかもしれない。
GetProcAddressもフックしてみては。

553:デフォルトの名無しさん
08/08/27 00:44:36
ヒント: ブラウザの実装コードは何処にある?

554:デフォルトの名無しさん
08/08/27 01:01:52
正解:地球

555:デフォルトの名無しさん
08/08/27 01:27:46
ありがとうございます。

>>552
GetProcAddressもフックして試してみます。

>>553
実装コード自体はiexplore.exeはもっていないんですね。
もう少し調べてみようと思います。


556:デフォルトの名無しさん
08/08/27 01:55:53
フックならジェイソン尾妻に聞くといいよ

557:544
08/08/27 14:29:36
<<545,<<546,<<547
ありがとうございます。

ウィンドウを生成した後にこのコードを載せたら
そのタイミングでは表示できるのに……

すぐに消えるのはなぜでしょうか。
できればもう少し詳しくお願いします。

558:デフォルトの名無しさん
08/08/27 14:57:54
>>557
WM_CREATE の時点ではまだウィンドウが非表示だから
何描いても無駄。

559:デフォルトの名無しさん
08/08/27 15:00:14
WM_CREATEの先頭で無理やりShowWindowしたら出たw

560:デフォルトの名無しさん
08/08/27 15:14:13
普通は WM_PAINT だろ

561:デフォルトの名無しさん
08/08/27 15:55:23
>>559
そして他のウィンドウを重ねると文字が消えると

562:デフォルトの名無しさん
08/08/27 16:07:24
>>561
それが、Vistaだとなかなか消えないんだよねえ。
リサイズして描画範囲より小さくしてやるとか、最小ボタン押して戻すとかしないと消せなかった・・・

563:デフォルトの名無しさん
08/08/27 16:12:46
そりゃ、DWI動いてるからな。

564:デフォルトの名無しさん
08/08/27 16:22:23
今すぐAeroGlassをオフにして試せ

565:544
08/08/27 18:15:33
答えてくれた方々ありがとうございます。
このエラーで教えられながらいろいろ調べて
こんなに勉強になるとは思いませんでした。

もう一つ気になるエラーがあるのですが、
WM_PAINTの所で

hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 20, 20, (LPCTSTR)szStr, (int)strlen(szStr));
EndPaint(hWnd, &ps);
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 90, 90, (LPCTSTR)szStr, (int)strlen(szStr));
EndPaint(hWnd, &ps);

とやると初めのTextしか表示されません。これはなぜなのでしょう。

566:デフォルトの名無しさん
08/08/27 18:17:48
>>565
なんでBeginPaint と EndPaint は1回でおk

567:デフォルトの名無しさん
08/08/27 18:18:55
EndPaintで無効領域が全部リセットされてるから。
デバイスコンテキストは無効領域の部分しか更新しない。

568:デフォルトの名無しさん
08/08/27 18:20:21
>>565
BeginPaintとEndPaintは最初と最後に置くだけ。
一回のペアで無効領域(書き換えの必要な範囲)がなくなるから
2回目呼んでも書き換え範囲外になって何もかかない。

569:デフォルトの名無しさん
08/08/27 19:27:07
invalidateRectで無効にすれば良い訳ですね?

570:デフォルトの名無しさん
08/08/27 19:36:52
>>563
DWIって何ですか?

571:デフォルトの名無しさん
08/08/27 19:50:06
ggrks

572:デフォルトの名無しさん
08/08/27 20:02:11
DWM、、、ね。ミスったわ。

573:デフォルトの名無しさん
08/08/27 20:51:18
>>569
そして、またWM_PAINTが飛んできて無限ループするのですね。わかります。

574:デフォルトの名無しさん
08/08/28 01:30:33
こういう通過儀礼って必要だと思います。
自分で考える力を養うためにしばらくそっとしてあげて!

575:デフォルトの名無しさん
08/08/28 01:56:18
一方ロシアは

576:デフォルトの名無しさん
08/08/28 03:00:52
WPFを使った

577:デフォルトの名無しさん
08/08/28 21:13:25
つまり

578:デフォルトの名無しさん
08/08/28 23:16:23
  \         /_ /     ヽ /   } レ,'        / ̄ ̄ ̄ ̄\
  |`l`ヽ    /ヽ/ <´`ヽ u  ∨ u  i レ'          /
  └l> ̄    !i´-)     |\ `、 ヽ), />/        /  地  ほ  こ
   !´ヽ、   ヽ ( _ U   !、 ヽ。ヽ/,レ,。7´/-┬―┬―┬./  獄  ん  れ
  _|_/;:;:;7ヽ-ヽ、 '')  ""'''`` ‐'"='-'" /    !   !   /   だ.  と  か
   |  |;:;:;:{  U u ̄|| u u  ,..、_ -> /`i   !   !  \   :.  う  ら
   |  |;:;:;:;i\    iヽ、   i {++-`7, /|  i   !   !  <_      の  が
  __i ヽ;:;:;ヽ `、  i   ヽ、  ̄ ̄/ =、_i_  !   !   /
   ヽ ヽ;:;:;:\ `ヽ、i   /,ゝ_/|  i   ̄ヽヽ !  ! ,, -'\
    ヽ、\;:;:;:;:`ー、`ー'´ ̄/;:;ノ  ノ      ヽ| / ,、-''´ \/ ̄ ̄ ̄ ̄
                 ̄ ̄ ̄            Y´/;:;:;\




579:デフォルトの名無しさん
08/08/29 00:38:27
SetConsoleTextAttribute関数でRGBを任意指定をしたいんですけど、これってできないんですか?

580:デフォルトの名無しさん
08/08/29 00:43:58
>>579
無理です

581:デフォルトの名無しさん
08/08/29 01:49:35
頑張れば可能じゃないの?
例えばの話だが、
赤にする→文字を書く→緑にする→同じ位置に文字を書く
を目にも止まらぬ速さで繰り返せば理論上は黄色に見えるだろ。
ただポケモンショックでぶっ倒れても俺は知らん。

582:デフォルトの名無しさん
08/08/29 17:00:30
自分のstartupinfoを書き換えるにはどうすればいい?

583:デフォルトの名無しさん
08/08/29 17:02:30
自分自身の書き換えではないけど…
差し替えた STARTUPINFO で 自アプリを CreateProcess して、自分自身は死ぬ とか?

584:デフォルトの名無しさん
08/08/29 17:06:47
やだ死にたくない

585:デフォルトの名無しさん
08/08/29 17:55:23
>>582
SetStartupInfo

586:デフォルトの名無しさん
08/08/29 17:58:38
しにたくないよう

587:デフォルトの名無しさん
08/08/29 18:08:44
マジレスするとGetStartupInfoWはRTL_USER_PROCESS_PARAMETERSの内容を写してるだけ

RTL_USER_PROCESS_PARAMETERS* p = (RTL_USER_PROCESS_PARAMETERS*)0x20000;
でアドレスが得られるから後は煮るなり焼くなり好きにしろ

588:デフォルトの名無しさん
08/08/29 18:21:31
URLリンク(undocumented.ntinternals.net)

>>RTL_USER_PROCESS_PARAMETERS is located at address 0x20000 (for all processes created by call WIN32 API CreateProcess).

今はどのOSでもそうなのかもしれないが、将来はどうなるかわからん
まあ頑張れ

589:デフォルトの名無しさん
08/08/29 18:44:01
そんなの気にしなくていいよ

590:デフォルトの名無しさん
08/08/29 19:24:55
何という糞プログラムw

591:デフォルトの名無しさん
08/08/29 19:49:04
>>587-588 ありがと!

592:デフォルトの名無しさん
08/08/29 20:17:29
STARTUPINFOを書き換えるなんてのがそもそも糞プログラムなんだから
方法がOS依存しようがそんな事どうでもいいだろ

593:デフォルトの名無しさん
08/08/29 21:40:15
個人的には、GetCommandLine()の書き換えも同じくらい糞だと思うが、
argvの書き換えが認められているから、こっちは許容されている感じがする……。


594:デフォルトの名無しさん
08/08/29 22:19:50
リストボックスの文字列の高さを決めたいんだけど、
TEXTMETRICのtmHeightじゃ高すぎて(上下の文字列と空間開きすぎ)
LOGFONTのlfHeightじゃ低すぎるんだけど(英語OSだとgとかpとかの下が切れた)

どうやったらいいのかな?

595:デフォルトの名無しさん
08/08/29 22:31:50
WNDCLASSとWNDCLASSEXの違いってなんですか?


596:デフォルトの名無しさん
08/08/29 22:56:11
拡張版か否か

597:デフォルトの名無しさん
08/08/29 23:05:40
>>581
そんなことでポケモンショックになるならDLPプロジェクタが発売禁止になってるて。

598:デフォルトの名無しさん
08/08/29 23:09:12
>>581
やってみたら?


599:デフォルトの名無しさん
08/08/29 23:09:31
>>594
TEXTMETRIC.tmHeightが開きすぎるように感じるのは、
むしろ日本語フォントが詰めて描画される傾向にあるから。
メイリオの話なら、それはフォント自体の仕様でそれが正常。
LOGFONT.lfHeightが低すぎるのは、
高さを決めたときのフォントと違うフォントで描画している。

とエスパーレスしてみる。

600:デフォルトの名無しさん
08/08/29 23:29:32
CreateWindowで作ったウインドウの背景色を後から変更するにはどうしたら良い?

601:デフォルトの名無しさん
08/08/30 00:05:33
>>600
CreateWindowで作ったウインドウの背景色を後から変更したら良い

602:デフォルトの名無しさん
08/08/30 00:25:41
>>600
h URLリンク(winofsql.jp)
など

603:600
08/08/30 00:27:55
>>601
なるほど。 ありがとうございます。

604:デフォルトの名無しさん
08/08/30 00:29:12
ある拡張子のファイルを開くプログラムに自作のソフトを設定して複数のファイルを同時に開いた時
コマンドで複数の引数を渡されるのではなく、開いた数だけプログラムが起動してしまうんだけど
これを何とか一つのプログラムで開けるようにできないですか?

605:デフォルトの名無しさん
08/08/30 00:32:28
>>604
出来ます。

606:デフォルトの名無しさん
08/08/30 00:34:03
>>604
mutex でググってみる?

607:デフォルトの名無しさん
08/08/30 00:34:12
まあ単色塗りつぶしにPatBltとか使うのは無能なんだが。

608:600
08/08/30 00:36:53
>>603は私じゃありません。

609:デフォルトの名無しさん
08/08/30 00:39:40
>>600
SetClassLong

610:デフォルトの名無しさん
08/08/30 01:40:31
素直にFillRect使っとけ、って感じはするね。
ExtTextOut使えとは流石に言わないけど。

611:デフォルトの名無しさん
08/08/30 02:09:48
>>599
日本語OSだとMS UI Gothicで
外語OSだとMS Shell Dlgとかいうフォントがきてる

日本語OSだとLogFont.lfHeightはちょうどいい感じ
外語OSのときに狭い。tmHeightは広い。
lfHeightt+2か3くらいで出せるとよさげ。
tmExternalLeadingとかいうのが2できてるけど、
日本語だろうと外語だろうと関係なくきてるから根拠がわからん。
tmInternalは常に0だし(´・ω・‘)

情報が良くわかってなくてスマンコ

612:デフォルトの名無しさん
08/08/30 05:19:24
>>610
昔はExtTextOut使った方が速かったんだけどね

613:デフォルトの名無しさん
08/08/30 09:03:08
>>602>>609>>610
どーも。SetClassLongを使ったら無事できました。

614:デフォルトの名無しさん
08/08/30 10:03:19
リッチエディットについて質問させて下さい。

リッチエディットにアイコンまたはビットマップをテキストと混在させて
表示することはできるのでしょうか?
また、そのアイコンやビットマップをクリックしたことを検出することは
できるのでしょうか。

もし可能でしたら、参考になるサイトや資料へのポインタ等をお教えいただければ
ありがたいです。

615:604
08/08/30 12:11:09
一応できたので報告。
mutexで二重起動を防止しつつ既に起動しているなら
FindWindowでそのウィンドウを見つけてCOPYDATAメッセージでコマンド引数を渡し
読み込み、後起動のウィンドウを閉じる。
となりました。ありがとうございました。

616:デフォルトの名無しさん
08/08/30 12:58:30
// ウィンドウの作成
if(isFullScreen) { // フルスクリーン
int sw;
int sh;
// 画面全体の幅と高さを取得
sw = GetSystemMetrics(SM_CXSCREEN);
sh = GetSystemMetrics(SM_CYSCREEN);


画面全体の高さを幅を取得とありますが

今使っているディスプレイのサイズを取得するってことですか?

617:デフォルトの名無しさん
08/08/30 13:04:24
プライマリモニタ

618:デフォルトの名無しさん
08/08/30 13:07:34
>>616
シングルモニタの場合には解像度が得られる
マルチモニタ環境の時には思ってるものと違うものが返ってくるかもしれない

619:デフォルトの名無しさん
08/08/30 13:09:44
ありがとうございます

620:デフォルトの名無しさん
08/08/30 13:34:49
>>614
リッチエディットにテキストとビットマップを混在させるのは可能。
URLリンク(www.codeguru.com)
この辺が参考になるかと。

621:デフォルトの名無しさん
08/08/30 16:08:24
パフォーマンスカウンタから自分自身のCPU使用率を得たいのですが、
自分自身を表すインデックスを取得するのにうまい方法は無いのでしょうか。
列挙するしか無いんですかね。

622:デフォルトの名無しさん
08/08/30 17:03:51
>>621
WMI

623:デフォルトの名無しさん
08/08/30 17:26:42
あー、自分自身ってのはプロセスのことです。説明不足があったらすみません。
自分自身のプロセスのCPU使用率を取得したい、ということです。

>>622
すみません、ぐぐったのですが、具体的な方法が分かりませんでした、、、

624:デフォルトの名無しさん
08/08/30 20:34:18
もっともっとぐぐるんだ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch