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


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

Win32API質問箱 Build29
501 名前:デフォルトの名無しさん :05/03/21 01:01:18
>>500
よく読め。

>>498
Linuxなんか持ち出さずとも、less一言で充分だろ。
で、素直にcygwinのless使えば?

502 名前:デフォルトの名無しさん :05/03/21 01:05:16
一言多いな

503 名前:デフォルトの名無しさん :05/03/21 01:32:43
>>495
・ハンドルもポインタも32ビットでデータ量は同じだろ
・ていうかそれぐらいで速度低下するなら、設計を見なおすべき
・既に指摘あったけど、他プロセスに渡したら無効
・ビットマップデータ本体とか、でかいものを渡すなら、
ファイルマッピング使え

504 名前:498 :05/03/21 02:33:30
>>501
確かにおっしゃる通りで、cygwin の less を使えばいいのですが、
自分で less コマンドを作ってみたいという純粋な技術的好奇心です。
無理なら諦めますし、可能なら作ってみたいと思います。
必要な情報はコマンドプロンプトウインドウの縦サイズ(行数)のみなので、
何か方法がありそうな気がするのですが・・・・・・

505 名前:デフォルトの名無しさん :05/03/21 02:43:01
>>503
偉そうですね。

506 名前:デフォルトの名無しさん :2005/03/21(月) 07:24:06
>>503
WM_COPYDATAはファイルマッピング使ってデータをプロセス間で渡しているわけだが。

507 名前:デフォルトの名無しさん :2005/03/21(月) 08:46:09
>>493
GetConsoleScreenBufferInfo()?
試したこと無いから使えるかわかんないけど。

508 名前:デフォルトの名無しさん :2005/03/21(月) 10:59:04
DLLでDLLプライベートなメモリ空間を確保する方法、教えて欲しい
(どこを調べればいいのかも含めて)

509 名前:デフォルトの名無しさん :2005/03/21(月) 11:13:22
DLLプライベートなメモリ空間
の定義からはじめようか。

510 名前:デフォルトの名無しさん :2005/03/21(月) 11:47:43
>>480

511 名前:デフォルトの名無しさん :2005/03/21(月) 11:54:11
480は共有メモリのこと言ってるんじゃないのか
プライベートってどこから出てきたんだ?

512 名前:デフォルトの名無しさん :2005/03/21(月) 12:02:35
>>511
兵卒

513 名前:デフォルトの名無しさん :2005/03/21(月) 12:23:36
DLL!弾持ってこーーーーーい!DLーーーL!

514 名前:デフォルトの名無しさん :2005/03/21(月) 12:31:15
>>503
ありがとうございます。
仰っている感じを見ると、データ渡しっぽいです。
それに、ポインタとかプロセスとか、まだ僕のレベルに早すぎたようです。

515 名前:デフォルトの名無しさん :2005/03/21(月) 12:31:46
AAが欲しいところだな。
実際に貼り付けるほどこのスレの住人は無粋じゃないけどな。

516 名前:デフォルトの名無しさん :2005/03/21(月) 12:32:49
でも地位が一番低いWindows関連スレだ。

517 名前:デフォルトの名無しさん :2005/03/21(月) 13:22:18
LPCTSTR str[] = {TEXT("アアア") ,TEXT("イイイ") }

str[0]>str[1] ってやった場合コンパイラは何を基準に比較してるか教えてください



518 名前:デフォルトの名無しさん :2005/03/21(月) 13:29:30
>>517
メモリ上の配置。コンパイラが恣意的に配置するので結果は予測不能。

519 名前:デフォルトの名無しさん :2005/03/21(月) 13:37:06
メモリ上の配置ってアドレスで比較してるってこと?
それならコンパイラが恣意的に決めてても特定のアドレスから
配列の要素が連続してることに変わりなくて必ず0番目の要素が最小になるってこと?

520 名前:デフォルトの名無しさん :2005/03/21(月) 13:47:53
>>519
>517の例では"アアア"と"イイイ"がどこに配置されるかが、恣意的であると書いた。
また、str[0] > str[1]は要素同士の比較であるから、この場合はポインタ同士の比較になる。
配置が恣意的である以上、ポインタ同士を比較しても無意味。

521 名前:デフォルトの名無しさん :2005/03/21(月) 13:54:31
>"アアア"と"イイイ"がどこに配置されるかが、恣意的である
これが恣意的ならどうやって順番区別してるんですか?

*str[0]>*str[1] ってやった場合コンパイラは何を基準に比較してるか教えてください


522 名前:デフォルトの名無しさん :2005/03/21(月) 13:58:46
>>521
2つの文字列の1つめの要素(TCHAR型)で比較。
UnicodeとMBCSで評価結果が違う。


523 名前:デフォルトの名無しさん :2005/03/21(月) 14:16:59
>>520>>522
>>517=>>519=>>521はどう見ても釣りだろう。
スレ違いだし、放置しとけ。

524 名前:デフォルトの名無しさん :2005/03/21(月) 14:17:34
>>523
はぁ?デブは黙ってろよ

525 名前:デフォルトの名無しさん :2005/03/21(月) 14:19:26
自作自演するなら30分はあけろ

526 名前:デフォルトの名無しさん :2005/03/21(月) 14:22:20
自演する意味がどこにあって、自演だと思うお前の思考回路を疑う。
要は話に関係のないデブが横からしゃしゃり出てくんなってことだ。
わかったら黙っとけデブ

527 名前:504 :2005/03/21(月) 14:24:32
すみません、>>504もお願いします。

528 名前:デフォルトの名無しさん :2005/03/21(月) 14:25:42
>>507は無視かよスルーかよ。ひでえな。

529 名前:523 :2005/03/21(月) 14:28:56
>517=>519=>521はとぼけてレスしている香具師がいなければ間違いないとして、
>518=>520だとは思うが、>522は違うかな?
>524=>526として、もし=>517なら寒い限りだな。
>525はそうすると、=>522かな?
#どうでもいいけど、>>が多いと書き込めないんだね。

530 名前:デフォルトの名無しさん :2005/03/21(月) 14:30:24
>>504
自分でlessを作ってみようと思うのはいいが、それなら何故他人に頼る?
他人に聞かないとできないなら自分でやる意味ないと思うが。
仮に、コンソールの行数を得る手段がどうしても判らないなら、引き数で指定するようにでも作ってみればいいと思うが。
#つーか、行数だけ得られてもインタラクティブな操作もできないと思うが。

531 名前:デフォルトの名無しさん :2005/03/21(月) 14:30:41
なにくだらない考察してんだこのデブは?

532 名前:デフォルトの名無しさん :2005/03/21(月) 14:41:50
C言語質問スレがいいんじゃねえか?

533 名前:デフォルトの名無しさん :2005/03/21(月) 14:42:52
>>528
ハムラビ法典マジでお勧め

534 名前:デフォルトの名無しさん :2005/03/21(月) 14:46:23
>>504
WriteConsoleとかSetConsoleAttribiteなんとかみたいにコンソールいじるAPIがあるからMSDNでそのへん検索しなさい。

>>517
とりあえずおまえさんはポインタと配列の区別付けるとこからやり直してきなさい。

535 名前:デフォルトの名無しさん :2005/03/21(月) 18:02:48
>>527
12時間前の自分と、572を書き込んだときの自分
成長しましたか?

536 名前:デフォルトの名無しさん :2005/03/21(月) 18:04:12
画像表示のことで質問があります。
最初に、画像A,Bを、裏画面A,Bを作ってそれぞれ裏画面に表示させ、その裏画面A,Bの画像を裏画面Cに貼り付けて、裏画面Cを表画面に出すというプログラムを書きたいのですがどうやればいいのでしょうか?

537 名前:デフォルトの名無しさん :2005/03/21(月) 18:04:20
Linuxのlessのソースでもみて該当するAPIがWindowsにあるか調べればいいんじゃないの?

538 名前:デフォルトの名無しさん :2005/03/21(月) 18:06:19
>>536
裏画面A,B用のバッファを用意
それぞれのバッファにA,Bを展開
そして、裏画面C用のバッファを用意し、
裏画面A,Bを裏画面Cに展開して、裏画面Cを表画面に表示させればいいんじゃないの?

539 名前:デフォルトの名無しさん :2005/03/21(月) 18:11:26
>>572

540 名前:536 :2005/03/21(月) 18:12:14
>>538
裏画面バッファの用意は
win_hdc=GetDC(hwnd);
hdc = CreateCompatibleDC(win_hdc);
hbmp = CreateCompatibleBitmap(win_hdc,640,480);
SelectObject(hdc,hbmp);
みたいな感じで良いんですよね?

それをどう組み合わせて、いつBitBltで表示させればいいのですか?

541 名前:デフォルトの名無しさん :2005/03/21(月) 18:17:03
>>536
裏画面て、メモリDCの事?
ABCについてそれぞれメモリDC作って、
ABをCに転送し終わったらCを画面に転送。
メモリDCについては
CreateCompatibleBitmap
CreateCompatibleDC
辺りで検索。

542 名前:デフォルトの名無しさん :2005/03/21(月) 18:25:38
>>540
>それをどう組み合わせて、いつBitBltで表示させればいいのですか?
描画したいとき・・・。
普通はWM_PAINT。
猫でもわかる〜でも読んどけ。

543 名前:536 :2005/03/21(月) 18:53:13
メモリDCだと思います。
ABをCに表示する際、毎回ABを読み込ませないとCに表示されないんです・・・
最初に一度だけABを読み込ませて後はそれをCに転送しまとめて表に転送したいのですが・・・。
毎回画像を読み込ませなくて良いようにできますよね?

544 名前:デフォルトの名無しさん :2005/03/21(月) 19:12:06
DLLで本体アプリケーションのウィンドウプロシージャをサブクラス化して、
DLLで追加したメニューだけオーナードローしたいのですが、WM_DRAWITEMと
WM_MEASUREITEMで自分のだけ処理したら他で追加されたメニューが
描画されなくなってしまいました。

サブクラス化したウィンドウプロシージャで、自分が処理しなかったものは
本来の処理に任せるようなことはできるのでしょうか?


545 名前:デフォルトの名無しさん :2005/03/21(月) 19:16:51
>>544
CallWindowProc()?

546 名前:544 :2005/03/21(月) 19:21:32
DLLの中で本体のウィンドウプロシージャをフック(?)しています。
このとき switch で受け取らなかったメッセージは CallWindowProc() で元のウィンドウ
プロシージャに送られて正しく処理されますが、caseに合致して処理を行った場合は
return後にそのメッセージは処理されない…という認識は間違ってますでしょうか。

---
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  switch(uMsg){
    case xxxx:
      // 処理
      break;
  }

  return (CallWindowProc((WNDPROC)OriginalProc, hWnd, uMsg, wParam, lParam));
}

547 名前:デフォルトの名無しさん :2005/03/21(月) 19:31:20
矩形やBitmapをアニメーションさせたいのですが、
WM_PAINT内にInvalidateRectで何度も再描画すると
ちらつきが酷すぎてしまいます。
より良いの方法を教えてください。お願いします。

548 名前:デフォルトの名無しさん :2005/03/21(月) 19:36:53
>>547
なんでWM_PAINT内で無効にすんのよ。
タイマーかなんかのタイミングにすべき。
あとWM_ERASEBKGND来たら何もせずに1返して背景描画を省略するとか、
上の質問じゃないけどメモリDCにあらかじめ描画内容を書いておいて、
WM_PAINT時にBitBlt一発で済むようにするとか。

549 名前:デフォルトの名無しさん :2005/03/21(月) 20:21:34
>548
アイサー

550 名前:デフォルトの名無しさん :2005/03/21(月) 21:25:29
Win32コマンドラインツールで利用出来る、昔のDOS版xargsのような
汎用のコマンドライン引数展開ルーチンはどこかにないでしょうか?

551 名前:デフォルトの名無しさん :2005/03/21(月) 21:32:46
cygwin\bin\xargs

552 名前:デフォルトの名無しさん :2005/03/21(月) 21:35:33
>>550
getopt

553 名前:デフォルトの名無しさん :2005/03/21(月) 21:36:45
Ocamlに標準で付いているArgモジュールだったらものすごく簡単に書けるのになぁ。

554 名前:デフォルトの名無しさん :2005/03/21(月) 21:57:33
>>550
Win32 APIのFindFirstFile & FindNextFile でワイルドカード展開できるよ。

555 名前:デフォルトの名無しさん :2005/03/22(火) 00:06:45
555 ∈(・◎・)∋

556 名前:デフォルトの名無しさん :2005/03/22(火) 17:10:58
テスト

557 名前:デフォルトの名無しさん :2005/03/23(水) 00:27:02
C/C++室から移動。

HWND hWND = GetActiveWindow();

と書いても現在アクティブなウインドウハンドルが取得できないが、どうしてでしょう?
(デバッガで見た)
コンパイルは通ります

558 名前:デフォルトの名無しさん :2005/03/23(水) 00:29:52
GetForegrounWindowと勘違い?

559 名前:デフォルトの名無しさん :2005/03/23(水) 00:31:27
>>557
>The return value is the handle to the active window attached to the calling thread's message queue.
>Otherwise, the return value is NULL.

MSDNにはこう書いてある。

560 名前:557 :2005/03/23(水) 00:32:11
それもやってみたけどだめだった。
詳しいソースはC/C++室にあるので見てほしい
GUITHREADINFO もやってみたんだが。

561 名前:デフォルトの名無しさん :2005/03/23(水) 00:38:07
>>560
>The foreground window can be NULL in certain circumstances, such as when a window is losing activation.

GetForegrounWindowがNULLを返す状況があるみたいだね。

562 名前:デフォルトの名無しさん :2005/03/23(水) 00:45:57
デバッガではいつやっても hWNDのとこで、 エラーです: 式を評価できません と出るんですが。 NULLとは違う気がします。
vc自体ほとんど初めてなので他に書くことが足りないかも知れません。

563 名前:デフォルトの名無しさん :2005/03/23(水) 00:48:18
違う気がしますって…NULLか調べろよ

564 名前:557 :2005/03/23(水) 00:52:30
NULLではなかったです。以下がデバッグのウインドウです

-hWND0x00b40330 {unused=??? }HWND__ *
unusedCXX0030: エラーです : 式を評価できませんint


565 名前:557 :2005/03/23(水) 00:57:04
すみません、さっきのは間違い
デバッガ使わず呼び出してみたらNULLでした。

566 名前:デフォルトの名無しさん :2005/03/23(水) 02:18:20
リストビューについての質問です。
チェックボックス付きリストビュー (LVS_EX_CHECKBOXES) を使用しているのですが、
四角の部分をクリックしないとチェックボックスが変化しません。
横の文字をクリックしてもチェックボックスが反応するようにするにはどうしたらいいでしょうか?

WM_NOTIFY - NM_CLICK を拾ってみたのですが、
四角の場合も文字の場合もメッセージが来るので、うまく判別できませんでした。

ListView って情報が少ないような気がする・・・


567 名前:デフォルトの名無しさん :2005/03/23(水) 02:35:34
クリックされた時に座標見て区別とか

568 名前:デフォルトの名無しさん :2005/03/23(水) 02:36:01
>>566
比較的最近の実装であるにも関わらず、VC6にはFlexGridがバンドルされてたりしたので
仕様が中途半端なことと相俟って使い込む人が少ないからじゃないだろか。
CodeGuruに行くといろんな拡張を目にするが、微妙だったりやり過ぎだったりしてこれまた決め手に欠ける。

で、肝腎のチェックボックスの仕様だが、それで気が済まないなら自前でやるしかないと思われ。

569 名前:557 :2005/03/23(水) 02:59:34
GetForegroundWindow でいけました。メモ帳のタイトル取れました。
しかしまたその後でうまく動かないです…
その後の ImmGetContext で IMEがONでもOFFでも hIMCに常にNULLが返ってきます。
いろいろ探したサンプルソース全部こんな感じだったんだけどなぁ。
MSDNも見たけどNULLになる条件等の記述はなかったです。

HWND hWND = GetForegroundWindow();
HIMC hIMC = ImmGetContext(hWND);
BOOL bRet = ImmGetOpenStatus(hIMC);
ImmReleaseContext(hWND,hIMC);

570 名前:デフォルトの名無しさん :2005/03/23(水) 04:44:14
>>569
おめーさん、GetForegroundWindowでもハンドル取れない
つってたじゃん。何で取れるようになった?

でさ、よく知らないんだけど、他プロセスのinput contextって
取得できるの?
GetLastErrorでアクセスできないとか返ってきてない?

571 名前:デフォルトの名無しさん :2005/03/23(水) 06:13:18
リッチテキストボックスを使用してるんですが、キーワードの文字色を自動で変える処理をやってるんですが、
Rtfコードを弄るとカーソルが先頭に来てしまいます。
カーソル位置の保存・スクロール状態の保存ー>Rtf編集後適応
とやっても瞬間的なスクロールがぱぱっと出てしまって画面がちらついてしまいます。
他にはリッチテキストボックスのプロシージャ内で、WM_PAINTメッセージを処理中には停止したりしたんですが、
どうにもちらつきが直りません。
スクロールの動きというか状態を一時停止する事は出来るんでしょうか?


572 名前:デフォルトの名無しさん :2005/03/23(水) 07:37:42
LockWindowUpdate?

573 名前:デフォルトの名無しさん :2005/03/23(水) 13:33:36
実行しているPCのタイムゾーン名をロケール設定に依存せずに"JST"、"EST"などの形で取得できる方法はないのでしょうか?
GetTimeZoneInformationを使用すると「東京 (標準時)」とか帰ってきますorz

574 名前:デフォルトの名無しさん :2005/03/23(水) 14:47:02
たしか、環境変数TZを指定しないと、だめだったっぽい。
標準では、日本語版Windows2000/XPでは設定されていない。
このための、日本語版Windows2000/XP限定の仕様(バグ?)だったはず。

ためしに、環境変数にTZ=JST-9を設定してみることをオススメする。

575 名前:デフォルトの名無しさん :2005/03/23(水) 14:48:50
waveファイルを再生するAPI教えて

576 名前:デフォルトの名無しさん :2005/03/23(水) 14:52:49
>>575
wave api でぐぐる位の事はしたんだろうな。おい。

577 名前:デフォルトの名無しさん :2005/03/23(水) 15:01:34
>>576
当たり前だろカスが、そんなレスいらねーよ

578 名前:デフォルトの名無しさん :2005/03/23(水) 15:05:05
「waveファイルを再生するAPI」でぐぐれ。
そして二度と来るな。

579 名前:デフォルトの名無しさん :2005/03/23(水) 15:31:43
アーカイバのC言語ソースって何処かに有るかな?

580 名前:デフォルトの名無しさん :2005/03/23(水) 15:32:27
ああ。どっかにあるよ。

581 名前:デフォルトの名無しさん :2005/03/23(水) 15:38:16
>580詳細キボンヌ

582 名前:デフォルトの名無しさん :2005/03/23(水) 15:40:10
>>578
レスするなつったろ!!消えろカスが

583 名前:デフォルトの名無しさん :2005/03/23(水) 15:41:21
>575>580ジャネーノ?

584 名前:デフォルトの名無しさん :2005/03/23(水) 15:41:45
>579か・・・

585 名前:デフォルトの名無しさん :2005/03/23(水) 15:49:06
ム板全体ID表示にしてくんねぇかなぁ。


586 名前:デフォルトの名無しさん :2005/03/23(水) 15:52:58
それは困る。自作自演ができない。

587 名前:デフォルトの名無しさん :2005/03/23(水) 17:09:16
僕も困る。
まったく別の複数の質問をしたい時、次の日まで待たないといけない。

588 名前:デフォルトの名無しさん :2005/03/23(水) 17:23:21
別に待たずに複数質問すりゃええやん。答える答えないは別にして。


589 名前:デフォルトの名無しさん :2005/03/23(水) 18:26:55
自作自演はにちゃんの華

590 名前:デフォルトの名無しさん :2005/03/23(水) 18:40:01
>>588
質問する時に、質問の要点が分かり難かったり、言葉使いが悪かったり、
質問側に不備があると答えてもらいにくくなるけど、
何回もの質問もそれに当たるかなと思って。

その質問や、それに似た質問に、一度答えてもらえないレッテルが貼られると、
マルチとか言われたりして、当分その関連の質問が出来なくなるから、
質問する時はかなり気を使う。

591 名前:デフォルトの名無しさん :2005/03/23(水) 19:11:05
まぁ、質問の前に自分の調べた範囲と、
その結果現れた問題に対する質問を明記するのは最低限の礼儀だろう。

さらに、疑問が複数あるなら、
1回の書き込みでうまく伝わるようにまとめる事も必要だろう。
複数回一気に投稿すりゃ、そりゃ投稿者は楽だろうが、
それを見た方は必然的にやる気あんの?ってことになるべ。

それを踏まえた上でなら、1回の質問で解決しない物は、
1回提出>解決>次を提出
なんてのも、普通にやることだろ?それが出来てりゃ答える人は答えるだろうさ。

答えてもらえない奴は、何処かで手抜きしてんだよ。
教えてもらってハイ終了なんて甘い考えで聞くからそれが相手にも伝わるんだろうさ。
んなもん、ここに限らず社会に出りゃ当然のことだと思うがな。

592 名前:デフォルトの名無しさん :2005/03/23(水) 20:16:07
複数のウィンドウを使うプログラムを作っています。
中心のウィンドウ以外には終了ボタンを付けたくないのですが、
終了ボタンの使えないウィンドウの作り方を教えてください。

最大化ボタンを使えなくする時は、^ WS_MAXIMIZEBOXで出来るのですが、
WS_CLOSEBOXみたいなのは無いようなので、分かりませんでした。
^ WS_SYSMENUだと、全部のボタンが使えなくなってしまいますし。

593 名前:デフォルトの名無しさん :2005/03/23(水) 20:20:05
EnableMenuItemをSC_CLOSEで。

594 名前:592 :2005/03/23(水) 20:28:06
>>593
EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_CLOSE, MF_GRAYED);
こんな感じで使って出来ました。ありがとうございました。

595 名前:550 :2005/03/23(水) 21:12:20
>>551-554
シンプルで公開されているのがないかと思ったのですが、結構無いもんですね。
自前でやってみます...

596 名前:デフォルトの名無しさん :2005/03/23(水) 23:49:27
>>575
ShellExecute

597 名前:573 :2005/03/24(木) 01:26:08
結局、環境変数TZ設定して_tzset(); _tzname[0]でお茶を濁すことに決定しますた(´・ω・`)
TZ=JST-9あってもGetTimeZoneInformationはしっかり日本語で返してくるようです‥‥

598 名前:557 :2005/03/24(木) 02:02:31
GetLastError を ImmGetContext の直後に挟んでエラー情報を取得して表示してみたけどエラーは無かった…
ImmGetOpenStatus の直後でも同じだった。
行き詰った…

599 名前:デフォルトの名無しさん :2005/03/24(木) 02:04:20
メモ帳のウインドウプロシージャを交換するにはどうすればいいですか?

600 名前:デフォルトの名無しさん :2005/03/24(木) 02:23:44
>>599
メモ帳のプロセスに進入し、
ウインドウプロシージャに該当する箇所を挿げ替える。

601 名前:599 :2005/03/24(木) 02:29:16
>>600
すいません、そのための関数や構文がわからないのです。

602 名前:デフォルトの名無しさん :2005/03/24(木) 02:37:39
>>601
AdvancedWindows読め。

603 名前:599 :2005/03/24(木) 02:54:31
あい、入手してきます

604 名前:デフォルトの名無しさん :2005/03/24(木) 04:02:02
>>603
そうか。
入手してきたら「DLLの〜」という章(AdvancedWindows改修第4版では22章)を読むんだ。
そこに他のプロセスに介入する手段が載っている。
プロセスへ進入できればメモ帳のウィンドウハンドルから
サブクラス化するなりの手段で完全に乗っ取る事ができるはずだ。

605 名前:デフォルトの名無しさん :2005/03/24(木) 04:43:39
>>598
環境ないから試してないけど、

HWND hIme = ImmGetDefaultIMEWnd( hForeground );
LRESULT lr = SendMessage( WM_IME_CONTROL, IMC_GETOPENSTATUS, NULL );

こんなかんじでできそうという記述が、検索してたらちらほら見つかった。

606 名前:557 :2005/03/24(木) 05:42:09
できた、!!!!!!
>>605 に感謝します。

IMC_GETOPENSTATUS ってぐぐっても7件しかヒットしないし、
MSDNに載ってないしこんなの見つけられない…
全ソースコードでも10行ぐらいのこのプログラムにすごく長期間苦しめられた。


607 名前:デフォルトの名無しさん :2005/03/24(木) 21:15:19
Visual Basic .NET 2003 + WIN32API でシリアル通信するプログラムを作ってるのですが
winXP上でコンパイルすれば、どのバージョンのWindowsからでも動くようになるのでしょうか。
それともコンパイラオプションなりで、ターゲットを明確にした方がよいのでしょうか。
writefileとかで簡単に出来るのは良いのですが、APIから下がどういう風に動いてるのかよくわからない・・・

608 名前:デフォルトの名無しさん :2005/03/24(木) 22:19:08
MSDNにAPIが使えるOSのバージョンって書いてないんだっけ?

609 名前:デフォルトの名無しさん :2005/03/24(木) 22:42:52
#define WINVER 0x0400
#define _WIN32_WINNT 0
#define _WIN32_WINDOWS 0
#define _WIN32_IE 0
#include <windows.h>
#include <windowsx.h>
いつもこうしている。

610 名前:デフォルトの名無しさん :2005/03/24(木) 22:43:25
>>608
例えばwritefileだったらいろいろ書いてあるけど、ページの最後の方に、
>Windows NT/2000:Windows NT 3.1 以降
>Windows 95/98:Windows 95 以降
ってかいてありますね。ということは、NT系と9x系両方対応してるのかな?
初心者なので良く分からないんだけど、APIで書いた部分はネイティブコードだろうから、
コンパイルした時点でハード制御の動作は決まってしまいますよね?
ということはコンパイルした時のDLLにNT系と9x系両方のコードが入ってるのかな?よくわからん。

611 名前:デフォルトの名無しさん :2005/03/24(木) 22:48:39
>>610
DLLってのは実行時に読み込まれる。
したがってコンパイル時にHやLIBに存在していた関数が
読み込んだDLLには存在していなかった、ということがありえる。
従って、Win2000以上などと限定された関数を含むプログラムを
WinMe以下にも対応させたければ、GetProcAddressを使って
関数が存在するかどうかを調べて、存在していなかったら関数を
呼ばないようにしないとならない。

612 名前:デフォルトの名無しさん :2005/03/24(木) 23:09:26
>>611
なるほど。ということは使いたい関数が実行時に存在していれば、
そのOS上では動作するということですね。
実行時にDLLを呼び出して機械語に変換できる仕組みというのが
いまいち不思議ですが・・・



613 名前:デフォルトの名無しさん :2005/03/24(木) 23:15:34
>>612
泥臭い事をするだけで不思議なことなんて何もないよ。

614 名前:デフォルトの名無しさん :2005/03/24(木) 23:16:48
>>612
DLLはすでに機械語になったプログラムだ。


615 名前:デフォルトの名無しさん :2005/03/24(木) 23:21:40
実行時リンクと言った方がわかりやすいかな

616 名前:デフォルトの名無しさん :2005/03/24(木) 23:24:30
>>614
信じられない

617 名前:デフォルトの名無しさん :2005/03/24(木) 23:27:28
コンピュータって不思議。



ですか?

618 名前:デフォルトの名無しさん :2005/03/24(木) 23:30:59
女って不思議。

619 名前:デフォルトの名無しさん :2005/03/24(木) 23:32:04
ダイナミックリンキングという方法は理解にしくいものなのかなあ?

620 名前:デフォルトの名無しさん :2005/03/24(木) 23:33:15
ageウザ

621 名前:デフォルトの名無しさん :2005/03/24(木) 23:34:03
>>619
いや、おそらくスタティックリンクがどういうことかも分かってないと思われ

622 名前:デフォルトの名無しさん :2005/03/24(木) 23:34:18
ageウザっていうやつがウザ


















という俺ウザ

623 名前:デフォルトの名無しさん :2005/03/24(木) 23:40:45
>>619
抽象的には理解できるが具体的にどう動くように作られるかが分からないんだよ。
コンパイル時には一意の機械語にはなってないんだろ。
その後に機械語を呼び出して動くというのが信じられないわけ。
もう寝る。

624 名前:デフォルトの名無しさん :2005/03/24(木) 23:43:42
>>623
コンパイル時もEXE側は〜というところにある関数を呼び出すと言うコードで一意になっている。
実行時に〜に関数のアドレスを埋めるのがダイナミックリンク。

625 名前:デフォルトの名無しさん :2005/03/24(木) 23:44:58
とりあえずスレ違いの話題がずっと続いていることだけは確か

626 名前:デフォルトの名無しさん :2005/03/24(木) 23:46:34
>>623
EXEファイルもロードされるまでは一意の機械語にはなっていない訳だが


627 名前:デフォルトの名無しさん :2005/03/24(木) 23:48:42
>>623
寝る前にこの本読んどけ
ttp://www.amazon.co.jp/exec/obidos/ASIN/4274064379/


628 名前:デフォルトの名無しさん :2005/03/24(木) 23:52:22
「一意の機械語」ってどういう意味で使ってるんだ?

629 名前:デフォルトの名無しさん :2005/03/24(木) 23:53:17
そのままメモリ上に置くだけで動くって意味だろ?
comファイルならそうだが、exeはそうじゃない。

630 名前:デフォルトの名無しさん :2005/03/24(木) 23:53:53
金物表現と論理表現のあるアセンブラ(w

631 名前:デフォルトの名無しさん :2005/03/24(木) 23:59:08
リロケーションってやつか。

632 名前:デフォルトの名無しさん :2005/03/25(金) 00:04:29
なるほどー。DLLやEXEが絶対アドレスで記述されていると考えているわけか。


633 名前:デフォルトの名無しさん :2005/03/25(金) 01:45:27
デマンドページングだから相対アドレスの処理は現代のCPUにはないだろ。
むしろシンボルの解決とか。

634 名前:デフォルトの名無しさん :2005/03/25(金) 02:03:06
>>633
は?

635 名前:デフォルトの名無しさん :2005/03/25(金) 05:58:48
DLLのロードってシンボルの解決そのものだから

636 名前:デフォルトの名無しさん :2005/03/25(金) 08:09:24
シンボルの解決というよりシンボルをキーにしたIATの解決といった方が。

637 名前:デフォルトの名無しさん :2005/03/25(金) 18:07:00
あるアプリケーション(たとえばOutlookなど)の子ウィンドウをEnumChildWindows()で
列挙した場合、その順番は常に一定なのでしょうか。MSDNを見ましたが、Zオーダーと
いうのがいまひとつ分かりません。

アプリケーション(列挙される親ウィンドウ)側のファイルが変更することはありません。
試してみた限りでは一定なのですが、確証がないのでどなたか教えてください。
宜しくお願いします。


638 名前:デフォルトの名無しさん :2005/03/25(金) 18:30:33
>>637
まず、Zオーダーについて勉強すればいい。

639 名前:637 :2005/03/25(金) 18:48:30
Zオーダーがウィンドウの前後関係(?)のようなものであることは
理解したんですが、重なっていないときの扱いがどうなるのかが
分かりません。

たとえばエディットコントロールを複数CreateWindow()したときに
必ずあとに生成されたものがZオーダーで前に来ることが保証されて
いるんでしょうか。

640 名前:デフォルトの名無しさん :2005/03/25(金) 19:06:18
>>639
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp
ここのZ-Orderのとこよく読んでみ。

641 名前:637 :2005/03/25(金) 19:30:35
>>640
ありがとうございました。

> When an application creates a window, the system puts it
> at the top of the z-order for windows of the same type.

ということで、生成された順番で上に重なっていくという認識で良いのですね。

もともとの質問に戻ってEnumChildWindows()で列挙される順番も同じになるかと
思ったのですが、よく考えるとアプリケーション側でウィンドウ生成の順番が一定
とは限らないのカ…orz


642 名前:デフォルトの名無しさん :2005/03/25(金) 19:56:12
Windows が起動されたときの時刻を記録したいのですが、
どのような方法があるでしょうか?
とりあえず、次のような方法があることは分かっています。

(1) レジストリの Run キーに時刻記録プログラムを指定する。
(2) 時刻記録プログラムをサービスとして実装する。

これらの他に方法はないでしょうか?


643 名前:デフォルトの名無しさん :2005/03/25(金) 20:05:30
>>642
スタートアップに入れる。
見つかりにくい場所に隠したいのなら別だがw

644 名前:デフォルトの名無しさん :2005/03/25(金) 20:08:21
>>643
そうなんです。見つかりにくいところに隠したいんです。
スタートアップに入れると、他のユーザーでログインされたときに、
検知できませんよね。

645 名前:デフォルトの名無しさん :2005/03/25(金) 20:10:17
explorer.exeに寄生する

646 名前:デフォルトの名無しさん :2005/03/25(金) 20:10:23
スタートアップじゃログインしない限り実行されないから、
OS起動時ではない。

647 名前:デフォルトの名無しさん :2005/03/25(金) 20:12:22
>>645
それはどのようにやるのでしょうか?

648 名前:デフォルトの名無しさん :2005/03/25(金) 20:34:26
>>647
explorer.exe尻に自分のプログラムをくっつけて、
explorer.exeの先頭に
  jmp 時刻を記録の処理

時刻記録の処理:
  処理
  jmp ds:本来のアドレス


OSの復元機能等をオフにして、ウイルス扱いされないようにケアも必要

649 名前:デフォルトの名無しさん :2005/03/25(金) 20:35:43
PEでそれやるくらいなら漏れならサービス作るな。
あるいはNW上の他の機械からpingでも打つか。

650 名前:デフォルトの名無しさん :2005/03/25(金) 20:42:37
GetTickCountはWindowsが起動されてからの時間を返すわけだが。

651 名前:デフォルトの名無しさん :2005/03/25(金) 20:45:57
うん知ってるよ。それで?

652 名前:デフォルトの名無しさん :2005/03/25(金) 20:47:03
>>650 それで?話題がつながってないような。。

653 名前:デフォルトの名無しさん :2005/03/25(金) 20:49:08
>>642
起動してしばらく経ってからでいいのなら、現在時刻からGetTickCountを差し引いた
時刻を記録するプログラムをスタートアップに入れる。
おそらく、これがもっとも正確にWindows(の時刻サービス)が起動した時刻を求められる。

654 名前:デフォルトの名無しさん :2005/03/25(金) 20:53:09
>>653
話がずれてる。
起動時間も記録方法もわかっているはず…

> 643 名前:デフォルトの名無しさん[sage] 投稿日:2005/03/25(金) 20:05:30
> >>642
> スタートアップに入れる。
> 見つかりにくい場所に隠したいのなら別だがw
>
> 644 名前:デフォルトの名無しさん[sage] 投稿日:2005/03/25(金) 20:08:21
> >>643
> そうなんです。見つかりにくいところに隠したいんです。
> スタートアップに入れると、他のユーザーでログインされたときに、
> 検知できませんよね。


655 名前:デフォルトの名無しさん :2005/03/25(金) 20:54:41
>>644
AllUsersのスタートアップに入れればいいじゃない。

656 名前:デフォルトの名無しさん :2005/03/25(金) 20:58:18
>>644
どういう理由かは知らんが、
そういういけすかないアプリをインスコされる方はたまったもんじゃないな。


657 名前:デフォルトの名無しさん :2005/03/25(金) 20:58:49
> Windows が起動されたときの時刻を記録したいのですが、
> (1) レジストリの Run キーに時刻記録プログラムを指定する。
> (2) 時刻記録プログラムをサービスとして実装する。
> これらの他に方法はないでしょうか?

> 見つかりにくいところに隠したいんです。

658 名前:デフォルトの名無しさん :2005/03/25(金) 20:59:39
>>655
あそこは意外と盲点だな

659 名前:デフォルトの名無しさん :2005/03/25(金) 21:15:07
>>648
そんなことしなくても
explorerに好きな時に進入してプロセスが起動した時刻調べりゃいいじゃん。

660 名前:デフォルトの名無しさん :2005/03/25(金) 21:25:44
>>657
ドメインコントローラがあるならログインスクリプトを流すという手も。

661 名前:644 :2005/03/25(金) 21:27:51
>>656
>どういう理由かは知らんが、
>そういういけすかないアプリをインスコされる方はたまったもんじゃないな。

他人のパソコンに仕込むんじゃなくて、
自分のパソコンが不正使用されていないかを確認したいんです。

>>659
できるだけ気づきにくいところに入れたいのと、
あと、できるだけ削除しにくいところに入れたい。
相手がシステムのことをよく知っていれば、
仕込んでも回避されてしまいますから。

662 名前:デフォルトの名無しさん :2005/03/25(金) 21:28:58
タスクスケジューラの自動化か何かで
指定時刻に休止状態から復帰できるようにするにはどうしたらいいですか?

663 名前:デフォルトの名無しさん :2005/03/25(金) 21:31:26
Borland C++Builder6.0

\5000

http://page7.auctions.yahoo.co.jp/jp/auction/g32387589

664 名前:デフォルトの名無しさん :2005/03/25(金) 21:37:42
>>644
> できるだけ気づきにくいところに入れたいのと、
> あと、できるだけ削除しにくいところに入れたい。
> 相手がシステムのことをよく知っていれば、
> 仕込んでも回避されてしまいますから。
鼬ごっこになるだけ。648みたく何らかのカーネルプログラムに寄生するしかない。

未確認だが、OSのブートログの日付をみて判断すればいいじゃん。

665 名前:デフォルトの名無しさん :2005/03/25(金) 21:39:56
諜報機関から身を守りたいんです。

666 名前:デフォルトの名無しさん :2005/03/25(金) 21:40:12
もう一つ未確認だが、ページファイルを解析?する方法もある。

667 名前:デフォルトの名無しさん :2005/03/25(金) 21:41:03
そうだね。
つーかイベントログみりゃいい話。


668 名前:デフォルトの名無しさん :2005/03/25(金) 21:41:31
ブートローダーとかにパスワードをかければ良さそうな…

669 名前:デフォルトの名無しさん :2005/03/25(金) 21:41:42
>>666
それはどうやるんですか?

670 名前:デフォルトの名無しさん :2005/03/25(金) 21:41:56
>666
未確認なのに方法もある、じゃねーだろこのチンカス

671 名前:デフォルトの名無しさん :2005/03/25(金) 21:42:18
>>668
ブートローダを書き換えられたら?

672 名前:デフォルトの名無しさん :2005/03/25(金) 21:43:10
>鼬ごっこになるだけ
起動と同時にメール送信すれば。

673 名前:デフォルトの名無しさん :2005/03/25(金) 21:44:01
>>671
不正アクセスと判断する。

674 名前:デフォルトの名無しさん :2005/03/25(金) 21:44:30
おおかた会社でエロ画像でもダウソしてんだろw
大事なファイルなら暗号化しとけばいいじゃん。

675 名前:デフォルトの名無しさん :2005/03/25(金) 21:45:29
>>671
書き換えをした時点で「不正使用されていないかを確認」する必要はなくなるよね


676 名前:デフォルトの名無しさん :2005/03/25(金) 21:46:37
>>675
不正使用後に、元のブートローダに復元されたら?

677 名前:644 :2005/03/25(金) 21:47:57
>>674
ちがいます。失礼なっ!

678 名前:デフォルトの名無しさん :2005/03/25(金) 21:48:59
>>676
多分判らない。

鼬ごっこになってるぞ。それに、もう、プログラムでなくセキュリティ系…

679 名前:デフォルトの名無しさん :2005/03/25(金) 21:52:02
まぁ、Win32APIには関係ない話になっていってるな。

680 名前:デフォルトの名無しさん :2005/03/25(金) 22:01:49
ソフトじゃどうにもならない問題だと思う

681 名前:デフォルトの名無しさん :2005/03/25(金) 22:14:45
たしかに鼬ごっこだが、何層にも防壁を入れておけば、
1回の起動という機会で破られることはないだろう。

682 名前:デフォルトの名無しさん :2005/03/25(金) 22:32:14
つうか
そこまでするような奴と共用しなければ良いと思うのは俺だけ?

683 名前:デフォルトの名無しさん :2005/03/25(金) 22:49:19
Windowsのパスワード機構の何が不満なのか

684 名前:デフォルトの名無しさん :2005/03/25(金) 23:32:11
AdvancedWindows買ってきた

685 名前:デフォルトの名無しさん :2005/03/25(金) 23:44:31
LoadLibraryで読み込んだDLLは必ずFreeLibraryで開放しなくてはいけないのでしょうか?
こちらのプログラムが終了したときに開放されているようなのですが・・・
これも、malloc,freeなどと同じようなものなのでしょうか?

686 名前:デフォルトの名無しさん :2005/03/26(土) 00:57:48
>>685
終了時には開放される。

687 名前:デフォルトの名無しさん :2005/03/26(土) 01:07:27
イベントログに起動時刻残ってるのに・・・

688 名前:デフォルトの名無しさん :2005/03/26(土) 01:18:06
Windowsプログラム初心者なのですが

HICON(HANDLE)が指すデータポインタとサイズを取得するには
どうしたらよいでしょうか?
データをリードするときにハンドルをロックする必要があれば
ロックする方法も教えてください。

データごとファイルに書き出したいのです。
よろしくおねがいします


689 名前:デフォルトの名無しさん :2005/03/26(土) 01:22:33
>>688
.icoファイルを作りたいと言う意図なら、その方法では不可能だぞ?

690 名前:デフォルトの名無しさん :2005/03/26(土) 01:24:26
>>688
まず、Handleとは何か?から勉強汁。
ちなみに、おそらく藻前が思い描いている方法では、
アイコンファイルは作れない。

691 名前:デフォルトの名無しさん :2005/03/26(土) 01:53:03
>>642
シェルをすり替えるという方法も

692 名前:デフォルトの名無しさん :2005/03/26(土) 02:00:17
>>691
syslogでFAだっちゅーの!!

693 名前:688 :2005/03/26(土) 02:17:28
どちらかというと、icoファイルを読み込んで得たHICONのデータを
他のデータと一緒にファイルに書き出したいのです

ご教授よろしくお願いします
(API名だけでもヒントいただければ、がんばってみます)


694 名前:デフォルトの名無しさん :2005/03/26(土) 02:23:16
>>693
>>690

そもそもHANDLE形式になっているのは、
HANDLE形式にすることによって、
内部で実際に扱っているデータを隠蔽する為。
あとはわかるな?

695 名前:デフォルトの名無しさん :2005/03/26(土) 02:23:19
>>693
そういうことはできないってば。
ttp://msdn.microsoft.com/library/techart/msdn_icons.htm
でも見て勉強汁。

696 名前:566 :2005/03/26(土) 02:35:12
>>567-568
遅くなりましたが回答ありがとうございました。
調べたら座標は取れたので 567 さんの方法を採用しましたが、他にも動きに不満があるので
568 さんのいう FlexGrid も調べてみます。


697 名前:デフォルトの名無しさん :2005/03/26(土) 03:24:16
>>693
GetIconInfo とか。

698 名前:デフォルトの名無しさん :2005/03/26(土) 12:51:23
>>694
その論法は間違っている。
アイコンは無理だが、多くのGDIオブジェクトのハンドルからは
GetObject()で情報を取得することが出来る。

699 名前:デフォルトの名無しさん :2005/03/26(土) 13:10:54
ユーザーがログオンおよびログオフしたときのイベントって、
ウィンドウやサービスから知ることはできますか?

700 名前:デフォルトの名無しさん :2005/03/26(土) 13:41:47
できなけりゃWindowsなんぞ使わない。そんなOS無い

701 名前:デフォルトの名無しさん :2005/03/26(土) 14:10:32
>>700
解ってて答えてるんだろうけど、質問スレで「できますか?」の質問に
「できる」「できない」で答えてるのは馬鹿に見えるよ。

702 名前:デフォルトの名無しさん :2005/03/26(土) 14:14:57
へいへいわたしゃ馬鹿でいいです

703 名前:デフォルトの名無しさん :2005/03/26(土) 14:41:19
>>702
× 馬鹿でいい
○ ばっかで〜す

704 名前:デフォルトの名無しさん :2005/03/26(土) 14:54:38
なんだとー、<`八´> 謝罪と賠償するニダ

705 名前:デフォルトの名無しさん :2005/03/26(土) 16:05:27
>>704
勝手にしてくれ。

706 名前:デフォルトの名無しさん :2005/03/26(土) 16:14:34
>>699
できますよ

707 名前:デフォルトの名無しさん :2005/03/26(土) 16:16:35
↑というわけで、おまいに馬鹿2号の称号を授ける

708 名前:デフォルトの名無しさん :2005/03/26(土) 16:36:23
>>699
できる

709 名前:デフォルトの名無しさん :2005/03/26(土) 17:24:09
>>699
できるよ

710 名前:デフォルトの名無しさん :2005/03/26(土) 17:36:58
つか>>701は相当馬鹿だな
初心者か

711 名前:デフォルトの名無しさん :2005/03/26(土) 18:22:11
できるかもよ

712 名前:デフォルトの名無しさん :2005/03/26(土) 18:23:03
できちゃった

713 名前:デフォルトの名無しさん :2005/03/26(土) 18:37:46
やん

714 名前:デフォルトの名無しさん :2005/03/26(土) 18:38:24
リッチエディット(2.0)でファイル以外にRTFを入出力するにはどうしたらいい?
ファイルに保存とかファイルから読み込みとかはいっぱい見るけど応用の仕方がわからない・・・

715 名前:デフォルトの名無しさん :2005/03/26(土) 19:06:35
>>699
きっと君なら出来る

716 名前:699 :2005/03/26(土) 19:08:32
結局みなさん知らないのですね。
それならそうと言ってくださればいいのに。

717 名前:デフォルトの名無しさん :2005/03/26(土) 19:11:44
             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 知ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ

718 名前:デフォルトの名無しさん :2005/03/26(土) 19:12:44
>>714
EM_STREAMOUT EM_STREAMIN

>>699
できます!!

719 名前:デフォルトの名無しさん :2005/03/26(土) 19:27:57
>>714
>>ファイル以外にRTFを入出力する
という意味がわからないが、「猫でも分かる...」に、rtf format の使い方が
載っている。自分は、C のソースの表示などで、用語の色付けとか、検索結果
の該当用語の強調に使っている。色付き文字の画面を作って bmp で保存して
貼り付けに使うとか。(MSwordで作って Print Screen でも出来るが)

720 名前:デフォルトの名無しさん :2005/03/26(土) 19:35:34
>>693
自分も HICON から辿れないか、調べましたが、行きつけませんでした。
また、HICON がもつデータは(説明によれば)RT_ICON と同じで、DIB に
mask bit が付加されたものだけのようで、.ico ファイルにするには、
更に2種類のブロックを追加しなければなりません。また、通常の .ico には
表示装置や表示環境に合うよう、複数の icon を持っていますので、これらを
全部揃えないと、補完された表示になって、汚くなります。
従って、HICON からではなく、元のデータの所在を探さざるを得なくなります。

721 名前:デフォルトの名無しさん :2005/03/26(土) 19:47:24
exeとかから抽出しろと。

722 名前:デフォルトの名無しさん :2005/03/26(土) 19:56:32
>>688
やりたいことがよく分かんないけど、.icoの読み書きなら↓をどうぞ。
HICONからicoファイルを作りたいなら、BITMAPの読み書きの要領で構造体を埋めて
ファイル出力するしかないかと。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/msdn_icons.asp
http://www.geocities.jp/gthu1df564/ico.html

723 名前:714 :2005/03/26(土) 20:52:00
ファイル以外にRTFを入出力する
というのはディスク上のファイルを介さずにメモリ上(string,char[]とかに)にテキストを読み出せたらいいな、という意味

どこかにRTFの仕様ないかな・・・英語のやつがMSにあるのは知ってるけど日本語のやつが見つけられない。
誰か基本的な部分だけでも教えてほしい。文字のフォントや強調表示とか。

724 名前:デフォルトの名無しさん :2005/03/26(土) 21:01:28
>>723
だからEM_STREAMOUT/EM_STREAMINだろ? 別にファイルに書き込まなきゃなんないなんて仕様があるわけじゃなし。

725 名前:デフォルトの名無しさん :2005/03/26(土) 21:08:53
プログラムでパスワードを保存したいのですが、みなさんはどうしていますか?
エンコードして単純にINI ファイルやレジストリに記録しておくのはちょっと心配ですよね。
何かよい方法はないものでしょうか。。。

726 名前:デフォルトの名無しさん :2005/03/26(土) 21:19:57
つまりデコード出来る形でどこかに書いておきたいという事なのか?

727 名前:デフォルトの名無しさん :2005/03/26(土) 21:20:05
暗号化

728 名前:725 :2005/03/26(土) 21:22:42
具体的に言いますと、アプリからメール送信をしたいので、
SMTP サーバーへの認証情報を記録したいのです。
ですから、不可逆の暗号化はできなくて、
デコードできる形で記録したいです。

729 名前:デフォルトの名無しさん :2005/03/26(土) 21:25:40
可逆の暗号化だな

730 名前:デフォルトの名無しさん :2005/03/26(土) 21:26:58
その暗号化に使うパスワードをどこに保存すれば・・・

731 名前:デフォルトの名無しさん :2005/03/26(土) 21:27:40
>>729
どういうのが安全でしょうか?
よく Crypt が使われますが、すぐに破られそうです。

732 名前:デフォルトの名無しさん :2005/03/26(土) 21:28:58
実行バイナリにパスワードを入れておけば、
分かりにくいけど、デバッガで追跡されたら終わりだしな。
それから、オープンソースにできないという欠点もある。

733 名前:デフォルトの名無しさん :2005/03/26(土) 21:29:53
notpasswordってファイル名にすれば
スーパーハカーもスルーすると思う

734 名前:デフォルトの名無しさん :2005/03/26(土) 21:30:44
そういやASMTPで送信されるパスワードって
エンコードされてるけどおもいっきり可逆なんだよ
だからディスク上に暗号化して置いてあっても
トラフィック盗聴されればおしまい

735 名前:デフォルトの名無しさん :2005/03/26(土) 21:30:55
自分の実行ファイルを書き換えて
パスワードを保存するってのは。

736 名前:デフォルトの名無しさん :2005/03/26(土) 21:31:38
>>734
CRAM-MD5 認証なら大丈夫。

737 名前:725 :2005/03/26(土) 21:40:27
NTFS であれば、パスワードを記録したファイルに対して
ファイルのプロパティで暗号化を施せば、
そのユーザー以外から見られることはなくなるので、安全ですね。

ただ、サービス プログラムなどの、特定のユーザーと
結びつかないプログラムでは、この方法は使えなさそうです。

738 名前:デフォルトの名無しさん :2005/03/26(土) 21:41:30
そしてFATが使われているときにも使えない。

739 名前:デフォルトの名無しさん :2005/03/26(土) 21:46:50
DllMain内でDLL_PROCESS_ATTACHがきた時にRegisterClassExをしようとしているのですが、
DllMainの引数で渡されるインスタンスハンドルを使うとRegisterClassExは成功しますが、
その後CreateWindowExが失敗します。(EXE側でWM_CREATEがきた時に。)
GetModuleHandle(0);だと成功するのですが、これで解決させたくありません。

どんな原因が考えられるのでしょうか?


740 名前:デフォルトの名無しさん :2005/03/26(土) 21:49:00
>>739
GetLastError() は何と言っている?

741 名前:デフォルトの名無しさん :2005/03/26(土) 21:49:25
Windows 98です。
CreateWindowExにはGetLastErrorが使えない…… orz

742 名前:デフォルトの名無しさん :2005/03/26(土) 21:52:39
これは関係ないのか?

Windows 95/98/Me: All window classes registered by a dynamic-link library (DLL) are unregistered when the .dll is unloaded.

Windows 95/98/Me: RegisterClassEx fails if the cbWndExtra or cbClsExtra member of the WNDCLASSEX structure contains more than 40 bytes.


743 名前:デフォルトの名無しさん :2005/03/26(土) 21:52:54
98ではCreateWindowExは使えないが

744 名前:デフォルトの名無しさん :2005/03/26(土) 21:53:22
>>741
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindowex.asp
使えるよ。

745 名前:デフォルトの名無しさん :2005/03/26(土) 21:55:00
>>741
>CreateWindowExにはGetLastErrorが使えない

そんなことどこに書いてある?


746 名前:デフォルトの名無しさん :2005/03/26(土) 21:55:47
>>742
ごめん、全然関係ないや

747 名前:デフォルトの名無しさん :2005/03/26(土) 21:56:36
>>745
http://pc8.2ch.net/test/read.cgi/tech/1110281860/741

748 名前:デフォルトの名無しさん :2005/03/26(土) 21:56:37
>>743
>>744

749 名前:デフォルトの名無しさん :2005/03/26(土) 22:07:57
Windows98やMEでCreateWindowExを使うとバグが出て
ウィンドウを2つ3つ作ったところでAPが落ちるらしい。
まあ素直にダイアログ作っとけってこった。

750 名前:デフォルトの名無しさん :2005/03/26(土) 22:09:14
すなおに 9x は捨てろってこった。


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