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


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

Win32API 質問箱 Build11
501 名前:デフォルトの名無しさん :03/06/01 00:50
>>499
>>500
まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!


502 名前:吉岡美穂 :03/06/01 01:49
>>500
ないこともないわ

503 名前:デフォルトの名無しさん :03/06/01 02:11
普通C++ならSTLコンテナ使うけどあれはAPIとは何の関係もないよな。

504 名前:デフォルトの名無しさん :03/06/01 03:34
VARIANTの配列使うやつなかったっけ。

まあ、普通はstd::vectorだな

505 名前:デフォルトの名無しさん :03/06/01 21:43
VC++のCreateWindowExでリストボックスのスタイルを
dwStyle:
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_TABSTOP | LBS_NOTIFY
dwExStyle:
WS_EX_CLIENTEDGE
で作成したんですがスクロールが遅いです。
MSDNライブラリの「キーワード」みたいな
高速にスクロールするリストボックスはどの指定で行うのですか?

506 名前:デフォルトの名無しさん :03/06/02 02:26
コンソールアプリからウインアプリSDKに移ってプログラムを組んでいるのですが、
ウインアプリだと、文字のサイズが一定でないので困っています。同じにする方法
を教えてください。

507 名前:名無し@沢村 :03/06/02 02:44
>>506
HFONT

508 名前:デフォルトの名無しさん :03/06/02 02:45
>>506
フォントにはプロショーナルフォントと等幅フォントの二種類があるのじゃよ。
↓続き

509 名前:デフォルトの名無しさん :03/06/02 02:47
>506
どう困っているのよ?

510 名前:デフォルトの名無しさん :03/06/02 02:58
DLLの中の関数が提供するダイアログボックスをタスクモーダルにする

(MessageBoxでMB_TASKMODALが指定された状態と同様の効果を得る)には

どのようにしたらよいですか?


511 名前:デフォルトの名無しさん :03/06/02 03:13
お答えありがとうございます。

>>507
それで調べて見ると、猫の所にいけました。どこを変えれば出来るかは
分かりませんが。
>>508
TrueTipeのことですか?フォント自体にそれが決まっているのか、フォント
には関係なく、属性として与えるのかわからないです。
>>509
うまく説明できませんが、背景の色を変えた文字を使用していて、その位置
に同じバイト数の文字列を持ってきた時、コンソールなら前のがきれいに
消えて新しく表示されますが、サイズが変わって特に後のほうが小さい時は
前野が消えずに残ってしまいます。

512 名前:デフォルトの名無しさん :03/06/02 03:36
>>511
ま、Windowsプログラミングの基礎からやっていけや

513 名前:デフォルトの名無しさん :03/06/02 03:40
>>511
たとえば
「MS Pゴシック」とかがプロポーショナルフォントで、文字ごとに幅が違うの。
「MS ゴシック」は等幅フォントで、文字の幅が全部同じ。

514 名前:デフォルトの名無しさん :03/06/02 03:54
>>512
はい。がんがります。
>>513
CreateフォントでMS ゴシックにしてもダメでした。他のパラメータが
違うのでしょうか。
hFont = CreateFont(32,//フォント高さ
32,//文字幅
0,//テキストの角度
0,//ベースラインとx軸との角度
FW_REGULAR,//フォントの重さ(太さ)
FALSE,//イタリック体
FALSE,//アンダーライン
FALSE,//打ち消し線
SHIFTJIS_CHARSET,//文字セット
OUT_DEFAULT_PRECIS,//出力精度
CLIP_DEFAULT_PRECIS,//クリッピング精度
PROOF_QUALITY,//出力品質
FIXED_PITCH | FF_MODERN,//ピッチとファミリー
"MS ゴシック");//書体名

515 名前:デフォルトの名無しさん :03/06/02 03:57
>コンソールなら前のがきれいに 消えて新しく表示されますが、
>サイズが変わって特に後のほうが小さい時は
>前野が消えずに残ってしまいます。

これってプロポーショナル云々じゃなくて前回の描画領域を背景で塗りつぶせってことじゃないの?


516 名前:デフォルトの名無しさん :03/06/02 04:04
「サイズが変わって」の意味がどうも分からない感じ。
フォントサイズが変わる、なの?

517 名前:デフォルトの名無しさん :03/06/02 04:06
例えば100ポイントの文字を表示して、その上に10ポイントの文字を重ねて表示すると、
先に表示した100ポイントの文字が後ろからはみ出て見えてしまう、ということでは?

518 名前:デフォルトの名無しさん :03/06/02 04:14
>>515
そうです。それを解決したいのもありますが、とにかく同じサイズに表示
したいんです。他の問題点としては文字列サイズを指定したものを縦に並
べて表示していく時、ベこぼこになってしまいます。

519 名前:デフォルトの名無しさん :03/06/02 04:20
>>516
コンソールのはABCDEを表示、改行、abcdeと表示するとCとcは同じ位置に
表示されますよね。ただ、ウインの方は、かなりずれます。インターネット
でも同じですが。それを利用して面白いAAができたと言う利点もありますが。
ABCDE
abcde
>>517
そうです。1文字32ピクセルの"ABCDE"の上に、同サイズの"abcde"を上書き
すると、コンソールではabcdeのみ表示されますが、ウインだとabcdEと
なります。

520 名前:デフォルトの名無しさん :03/06/02 04:21
DrawTextで矩形を指定じゃないか

521 名前:デフォルトの名無しさん :03/06/02 04:25
>>519
それ見る限り、ちゃんとMSゴシックが表示されてないんじゃないかと

522 名前:デフォルトの名無しさん :03/06/02 04:30
あぁわかった。>>514の書体名、「MS」は全角じゃないとダメだよ。

523 名前:デフォルトの名無しさん :03/06/02 04:30
>>520
問題はそれではありませんでした。次に書きますが。
>>521
やってしまっていました。SelectObjectを入れ忘れていました。入れたら
出来ました。すいません。本当にごめんなさい。答えてくださったみなさま、
どうもありがとうございました。逝って来ます。

524 名前:デフォルトの名無しさん :03/06/02 04:32
>>522
それは大丈夫みたいです。スペースを入れまくったりしても大丈夫でした。

525 名前:デフォルトの名無しさん :03/06/02 04:35
システム登録済みの固定幅フォントを使うと簡単
HFONT hFont = (HFONT) GetStockObject(SYSTEM_FIXED_FONT);
HFONT hFontOld = (HFONT) SelectObject(hDC, hFont);
TextOut(〜);
SelectObject(hDC, hFontOld);


526 名前:デフォルトの名無しさん :03/06/02 04:45
>>525
おおっいいですね。簡単にできます。ありがとうございました。

527 名前:510 :03/06/02 09:42
>>510
自己レスっす。
手でガリガリ書くしかないようです。
EnumThreadWindows()でウィンドウ一覧を獲得し、
自分以外のウィンドウをEnableWindow(FALSE)して解決しました。


528 名前:デフォルトの名無しさん :03/06/02 13:09
Windows画面(どのアプリでも)で
押されたキーボードのキーが何が押されたか監視し、
そのキーが押されたときに他のキーが押されたと認識されるやり方が解る方いますでしょうか?
よければ教えてください。

例:F12キーが押された場合CTRL+Numberキーが押された事にする。
という感じです。

529 名前:デフォルトの名無しさん :03/06/02 14:04
>>528
SetWindowsHookExでWH_KEYBOARDを引っかける。

530 名前:デフォルトの名無しさん :03/06/02 14:35
質問させてください。
任意のアプリケーションが呼び出すWin32APIを監視(?)して、
自分で作成したDLL内の関数にすりかえる方法ってあるでしょうか?
自作DLLの注入は出来ても、Win32APIを偽装することは無理なんでしょうか?

531 名前:529 :03/06/02 14:49
>>529
訂正。
WH_KEYBOARD_LLじゃないとダメかも。

532 名前:名無し@沢村 :03/06/02 15:25
エクセルのようなワークシートをつくるWin32APIはどれですか?

533 名前:デフォルトの名無しさん :03/06/02 15:31
>>532
MoveTo
LineTo
など

534 名前:名無し@沢村 :03/06/02 18:31
>>533
MoveToとLineToの升目の中に文字や計算式を入力するWin32APIは?


535 名前:デフォルトの名無しさん :03/06/02 18:34
>>534
APIつーかエディットコントロールでも貼り付ければ?

536 名前:デフォルトの名無しさん :03/06/02 18:43
沢村の質問キタ━━━━━━(゚∀゚)━━━━━━ !!

537 名前:名無し@沢村 :03/06/02 18:49
>>535
MoveToとLineToの間の升目の数だけエディットコントロールを貼り付けるのか?
膨大な数のエディットコントロールができるな…

538 名前:名無し@村沢 :03/06/02 18:59
>>537
ハローワールドの次の作品作っているのかな?
期待してるよん。

539 名前:デフォルトの名無しさん :03/06/02 19:22
すみません、質問があります。
プロセスの使用メモリを小さくする、最も一般的な方法を教えてください。
単にウィンドウを開くだけのプログラムでも、
2MB近く消費しているようなのですが…。

540 名前:デフォルトの名無しさん :03/06/02 19:38
>>539
・スタートアップコードを自分で書く
・スタックを極限まで減らす

541 名前:デフォルトの名無しさん :03/06/02 20:07
>>539
ウインドウを作成し表示したらいったん最小化して戻す

542 名前:539 :03/06/02 21:04
早速のお返事をどうもありがとうございます。
>>540
スタートアップコードはいじったことがありませんでした。勉強してみます。
スタックを減らすというのは、具体的には何をすればいいんでしょう…。
>>541
画面表示状態によって使用メモリが変化するんですね。これは知りませんでした。
よく考えてみると、使用メモリが小さいプロセスというのは、
ウィンドウが表示されていないものばかりでした。
タスクマネージャを見ると使用メモリが小さなものがあったので、特別な方法が
あるものと思い込んでしまったのですが、私の早とちりだったかもしれません。

543 名前:デフォルトの名無しさん :03/06/02 22:55
見えないダイアログを作成しようとして

case WM_INITDIALOG: {
ShowWindow(hWnd, SW_HIDE);

のようにしていますが消えてくれません。
Windowを表示しないようにするにはどうしたらいいですか。


544 名前:  :03/06/02 23:05
Windowsの音量を調整(ボリューム)するAPIってわかりますか?

545 名前:デフォルトの名無しさん :03/06/02 23:07
>>532
リストビューコントロールにLVS_EDITLABELSのスタイルを指定すると
エディット可能になるよ。
LVS_EX_GRIDLINESも指定するとグリッド線が描かれる。

>>543
ダイアログがメインウィンドウだと非表示にしようとしても、勝手に表示
された記憶がある。そうでないなら、普通に消せたかと。

546 名前:505 :03/06/02 23:53
くっ、やはり高速リストボックスは無理なのか!?

>>543
その後、UpdataWindow( hWnd );
かな?(w
スペル間違えてたらスマソ

547 名前:530 :03/06/03 01:24
ここで聞いたのは間違いだったようです。


548 名前:Win32SDK勉強中 ◆Win32BkCJ. :03/06/03 01:24
>>546
うん、間違えてる。
UpdateWindowだね

549 名前:デフォルトの名無しさん :03/06/03 02:18
>>543
それ、俺も昔悩まされた

DoModal()ではなくCreate()を使ってウィンドウ作成すれば表示されない
表示するときはShowWindowする

それとそのウィンドウ閉じたときは
OnCancel()は呼ばれずWM_DESTROYが送られる
その後DestroyWindow()してメモリ解放


550 名前:デフォルトの名無しさん :03/06/03 04:00
>>547=530
APIフックなんてググればすぐに出てくると思うが?

551 名前:デフォルトの名無しさん :03/06/03 05:44
>>537
いま編集対象になってる升にだけあればいいんでは。
升ごとにテキストバッファを持っとかないといけないけど。

552 名前:名無し@沢村 :03/06/03 10:12
>>530
「Advanced Windows」買え

553 名前:デフォルトの名無しさん :03/06/03 10:12
>>552
Windows 2000 Advanced Server?

554 名前:名無し@沢村 :03/06/03 10:15
>>553


555 名前:デフォルトの名無しさん :03/06/03 10:35
>>552
Advanced には載ってない

556 名前:デフォルトの名無しさん :03/06/03 11:06
「画面上の座標(x, y)で左クリック」という処理をプログラム適に実行するには、
どうすればよいでしょうか?
デスクトップのハンドルを取得して、WM_LBUTTONDOWNメッセージを
SendMessageで送信してみたのですが、上手くいきません。
おおざっぱでいいので教えてください。よろしくおねがいします。

557 名前:デフォルトの名無しさん :03/06/03 11:07
>>543
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50

で似たような質問があった。答えもあった。

558 名前:デフォルトの名無しさん :03/06/03 11:11
>>556
デスクトップではなくて、メッセージを送りたいウインドウのハンドルを取得しないとダメなんじゃない?

559 名前:直リン :03/06/03 11:13
http://homepage.mac.com/yuuka20/

560 名前:デフォルトの名無しさん :03/06/03 11:13
>>556
mouse_event

561 名前:デフォルトの名無しさん :03/06/03 11:37
>>556 よく質問の意味が分からないのですが、位置指定なら。
const int y=100,x=100;
case WM_LBUTTONDOWN:
if(LOWORD(lParam)!=x||HIWORD(lParam)!=y)break;
hdc=GetDC(hWnd);
TextOut(hdc,x,y,"指定した位置を押しました",24);
ReleaseDC(hWnd,hdc);
break;

562 名前:530 :03/06/03 12:12
>>552
改訂第4版に追記されてたんですね。
以前の版を持ってるんで、買いたくないんですけど・・・。
どなたかソース貼って貰えませんか?

563 名前:デフォルトの名無しさん :03/06/03 12:26
>>562
DLLの注入までできているなら
後はインポートテーブルを書きかえるだけじゃないか
GetProcAddressの返り値の加工も必要かもしれないが

564 名前:530 :03/06/03 12:45
>>563
インポートテーブルの書きかえですか。
なるほど。ありがとうございます。
それくらいならAdvancedWindows買わなくてもなんとか出来そうです。
AdvancedWindowsでも同様の方法が記述されているんでしょうかね?

565 名前:デフォルトの名無しさん :03/06/03 18:44
タイトルの所にFPS表示させるのって
相当オーバーヘッド大きい?


566 名前:デフォルトの名無しさん :03/06/03 19:04
>>505
そのスタイルだけ見てわかるかw
項目が1万くらいあるっていうなら仮想リストボックス、
5億ぐらいあるんだったら仮想リストビューにしとけ

567 名前:デフォルトの名無しさん :03/06/03 19:17
一応。
ttp://www.codeguru.com/system/apihook.html

568 名前:デフォルトの名無しさん :03/06/04 02:29
>>530

ttp://www.geocities.co.jp/SiliconValley-Oakland/7565/

あと、
ttp://www.geocities.co.jp/Playtown-Domino/8282/

とかか?まぁ、クラックガンガレ


569 名前:デフォルトの名無しさん :03/06/04 11:42
ツリービューのノードがドラッグ中というメッセージをとらえるには
どうやったらよいのでしょうか?

570 名前:530 :03/06/04 16:24
563>>567>>568
ありがとうございます。おかげさまで解決しました。

>>568
このように利用されているんですね。
ちなみに私はクラックではなくお仕事で使います。w

571 名前:デフォルトの名無しさん :03/06/04 16:54
>530
そのAPIを提供しているDLLをこういうの http://www.dependencywalker.com/ とかを
使って特定し、そのDLLに被さるDLLを作って乗っ取ればOKでは?

572 名前:デフォルトの名無しさん :03/06/04 18:20
質問です。
VB6 SP5
Win2000
Exe起動直後にALT+F4を押し、そこで起きるイベント(QueryUnload)時に
GetMenuItemInfoを使って閉じるメニューの情報を取得しているのですが、
うまく情報を取得することができないです。
一度メニューバーをクリックした後にALT+F4をするとうまく取得できるのですが。
起動直後にうまく情報を取得するにはどうしたら良いでしょうか?

'×ボタンのメニュー情報を取得
With Mnu
.cbSize = Len(Mnu)
.dwTypeData = String(80, 0)
.cch = Len(.dwTypeData)
.fMask = MnuM_STATE
.wID = SC_CLOSE
lngRet = GetMenuItemInfo(hMenu, .wID, False, Mnu)
End With

573 名前:デフォルトの名無しさん :03/06/04 22:50
>>542
SetProcessWorkingSetSize
最小化されたときはDefWindowProcか何かがこれを呼んでる

574 名前:  :03/06/04 23:36
mixer系APIを使って、ボリュームを調整したいのですが詳しく解説しているページとかありませんか?
言語はVC++6.0でMFCのウィザードを使ってます。

575 名前:539 :03/06/05 00:17
>>573
おお、どうもありがとうございます。
でも、これが使えるのってNT系だけみたいですね…。

576 名前:デフォルトの名無しさん :03/06/05 03:59
自分で作ったウィンドウの表示/非表示が変更されたことを知るにはどうすればよいのでしょう。
WM_SHOWWINDOW では表示/非表示が変更されようとしているタイミングで送られてくるので少しタイミングが早すぎます。
WM_SHOWWINDOW を DeWindowProc 関数に通した後でも変更はまだ反映されていないようです。
御存知の方どうか宜しくお願いします。


577 名前:デフォルトの名無しさん :03/06/05 06:49
>>576
SPYでメッセージを追え

578 名前:528 :03/06/05 13:46
>529さま
たいへん遅くなりましたが、ご回答ありがとうございますm(_ _)m

579 名前:デフォルトの名無しさん :03/06/05 19:16
>>576
少し早いと思ったら、何か適当なメッセージを自分にPostしとくのはどうか

580 名前:デフォルトの名無しさん :03/06/05 22:47
>>576
表示ならWM_PAINTとか
でもLonghornでだめぽになりそうな予感

581 名前:デフォルトの名無しさん :03/06/05 23:20
>>576
WM_WINDOWPOSCHANGED
でWINDOWPOSのflagみればいい気もするが。

582 名前:デフォルトの名無しさん :03/06/05 23:27
ここでいいのか不安ですが質問させていただきます
WindowsでEXE単体で動くちょっとしたツールを作りました
ただちょっとだけセーブデータを保存したくなったんですが、datファイルなどをつくりたくありません
exeファイルのお尻に勝手にデータをくっつけて平気でしょうか

保存する(exeの最後にくっつける)データはおそらく文字列です

583 名前:デフォルトの名無しさん :03/06/05 23:32
>>577-581
ありがとうございます。
>>577 氏の発言にしたがいSPYでメッセージを追っていたところ
WM_WINDOWPOSCHANGED が目的に適したメッセージのように思えましたので
WM_WINDOWPOSCHANGED を処理する方向で実装することにしました。
こんなにもたくさんのレスどうもありがとうございました。

584 名前:デフォルトの名無しさん :03/06/05 23:41
>>574
ページとかは知らないけど多分mixer系APIを使う。
mixerOpenとかmixerGetLineInfoとか。

585 名前:584 :03/06/05 23:47
と思ったらそこから先を知りたかったのね…、スマン
これくらいしか分かりません。

えーと。Windowsにはn個(大抵はサウンドカードの枚数)の
ミキサーデバイスがあって、各mixerデバイス毎にm個
(サウンドカードの種類による)のミキサーラインがあって、
とかいう概念が基本かな。

どのミキサーラインがWAVEなのかCDなのかLineInなのかというのが
サウンドカードの種類によって違ったりするので、
きっちりやるなら色んな環境でテストしないといけないとか。

586 名前:デフォルトの名無しさん :03/06/06 02:12
>582
答える前にdatファイルを作りたくない理由を聞きたいと思うのはオレだけかな?

587 名前:デフォルトの名無しさん :03/06/06 02:19
いじられたくないとか・・・

予めくっつけておいて、そこを書きかえればいいんじゃないかな。
とかいいつつできないけど。

588 名前:デフォルトの名無しさん :03/06/06 02:50
CreateDIBSectionでビットマップのビットへのアドレスは分かったんですけど、
ピクセルのRGBを取り出す方法が分かりません。
24bitで。

589 名前:586 :03/06/06 02:52
偉そうに書いたけど自分も解らないです。
でも個人用に作るとしてもリビルドしたら、それまでのが消えちゃうよなぁ。
普通に考えるとマズイと思うんだが...

590 名前:デフォルトの名無しさん :03/06/06 04:16
平気かどうか以前に自分自身を書き換えられるの?
実行中のexeはシステムが開いていて書き込みオープンできないでしょ
>>588
24ビット.bmpのヘッダを除いた部分と同じ

591 名前:デフォルトの名無しさん :03/06/06 06:23
∩( ・ω・)∩モニュアゲ

592 名前:デフォルトの名無しさん :03/06/06 07:26
>>588

「DIBSection」で愚愚ればサンプルが見つかると思うが?


593 名前:デフォルトの名無しさん :03/06/06 07:51
>>586-587
本当に「ちょっとしたツール」なので、ファイルが2個になるのが嫌なだけです
ぶちゃけ「ドラッグインしたファイルを、リストとしてtxtに吐き出すツール」なのですが
出力先の設定を保存しておきたいのです

594 名前:デフォルトの名無しさん :03/06/06 08:08
レジストリは嫌いなん?

595 名前:デフォルトの名無しさん :03/06/06 08:34
普通はiniファイルかレジストリだよなー

596 名前:デフォルトの名無しさん :03/06/06 08:57
レジストリにせよiniにせよ、アンインストーラつきでないソフトで使うのはアレだが。
つことで、ちょっとしたツールには余計向かない気がするな。

597 名前:デフォルトの名無しさん :03/06/06 09:07
>>596
じゃあ、何がいいの?

598 名前:デフォルトの名無しさん :03/06/06 09:14
>>596
ツール自体に設定情報の削除機能を入れておけばいいだけの話
アンインストーラーなど必要ない

599 名前:デフォルトの名無しさん :03/06/06 09:18
じゃあ、NTFS限定やけど、NTFSストリームにでも保存したら?

600 名前:デフォルトの名無しさん :03/06/06 09:19
iniファイルだったら専用APIで読み書きできるし、datよりいいと思います。


601 名前:名無し@沢村 :03/06/06 09:45
最近の流行はXMLだな

602 名前:_ :03/06/06 09:45
http://homepage.mac.com/hiroyuki43/moe/hankaku06.html

603 名前:デフォルトの名無しさん :03/06/06 11:02
>>593
おいらだったらレジストリだな
インストーラやアンインストールは簡便に WSH で作っちゃえばよろし

604 名前:名無し@沢村 :03/06/06 11:14
>>593
おまいがネット上にサーバを立ち上げて、全ユーザの設定情報を一括管理しろ。

605 名前:デフォルトの名無しさん :03/06/06 11:43
>>593
exeA(本体)のリソースにexeB(Aをいじくってから自殺)を仕込んどく。
exeAの終了時にTempにセーブデータとexeBを切り離し、exeA終了。
exeBはexeAの終了(ファイル書き込みが可能になる)を待って
セーブデータの内容をexeAに書き込み、セーブデータを削除してから
exeBは自殺。

どーよ?

606 名前:デフォルトの名無しさん :03/06/06 11:48
>>605
どう考えてもiniファイルの方が簡便。

607 名前:デフォルトの名無しさん :03/06/06 12:13
そういうケースなら ini ファイルだろ。
インストーラのないソフトでレジストリは勘弁してくれ。
ここらへんは個人の好みなのかもしれないが。


608 名前:デフォルトの名無しさん :03/06/06 12:29
>>607
おなじく。ちょっとしたツールなら迷うことなくINI。
レジストリはいくつもソフトを作ってて
しかもそれが関連してあるときしか意味が無い。

Aというソフトがインストールされていたら実行できるとかね。

ちなみにOSをよく再インストールするので
しょうもないレジストリの使い方をするソフトは
使わないようにしてる。

609 名前:605 :03/06/06 12:36
>>606
いや、俺もそう思うけど、593の要望に遵ったまで。

610 名前:デフォルトの名無しさん :03/06/06 12:37
( ・ω・)∩<先生。604は何が言いたいのかわからないです。

611 名前:デフォルトの名無しさん :03/06/06 12:39
>>610
知障?

612 名前:デフォルトの名無しさん :03/06/06 12:49
>>609
593の要望は
>ファイルが2個になるのが嫌なだけです
なので、>>609はその要望を満たしていないと思うがどうか。

613 名前:デフォルトの名無しさん :03/06/06 12:52
設定はBIOSに保存
どうよ?

614 名前:デフォルトの名無しさん :03/06/06 12:55
さらに、exeBがexeAを呼び出して、
exeAはexeB終了と同時にこれを削除し
exeAは、安心して終了

615 名前:デフォルトの名無しさん :03/06/06 13:19
レジストリ人気ないですなぁ
オイラはちょっとしたツールにも MRU リストが欲しいからすぐ
CRecentFileList 、ファイル名以外の設定を保存したい時はそれを
派生させたクラスを使う
すると必然的にレジストリに書き込むことになるわけで

.NET の実装見てると、DLL のシェアとレジストリって実はMSも後悔
しるようにも見えるが、オイラは↑で特に困った経験はないなぁ


616 名前:デフォルトの名無しさん :03/06/06 13:22
>>615
開発者が困るんじゃなくてユーザが困るって話だろう。

617 名前:デフォルトの名無しさん :03/06/06 13:38
だからツールに使ったレジストリの消去機能を入れておけばいいんだって

618 名前:デフォルトの名無しさん :03/06/06 14:15
>>615
CRecentFileList使うときでもレジストリじゃなくてiniに保存できますよ。
CWinApp::InitInistance()で何かいじくればよかったはず。

619 名前:デフォルトの名無しさん :03/06/06 14:28
M$はWin32以降レジストリの使用を推奨しているけど、本来レジストリは
COMやOCXのためのもので一般のアプリが使うのは良いとは思わない。
(シェルはバシバシ使ってるけど)
基本的には.ini形式だろな。これが何だかんだ言って一番安全。
レジストリの場合、こわれたら他のアプリも道連れ。
.INIファイルを秘密の奥深いフォルダーに隠しておく。すべてhidden属性
にセット。同時に100個位、多数ダミーを作る。一回毎にファイル名を
変える。他人にいじられないようにする方法なんていくらでもあるだしょ。

620 名前:デフォルトの名無しさん :03/06/06 14:33
>>619
> .INIファイルを秘密の奥深いフォルダーに隠しておく。すべてhidden属性
> にセット。同時に100個位、多数ダミーを作る。一回毎にファイル名を
> 変える。他人にいじられないようにする方法なんていくらでもあるだしょ。

アフォということでいいですか ? > ALL

621 名前:デフォルトの名無しさん :03/06/06 14:41
レジストリファイルの構造わかりますか?

622 名前:デフォルトの名無しさん :03/06/06 15:55
>>620
同意。
593はファイルを増やしたくないと言っているのに100個もファイル増やしてどうするよ?
それに論点は「設定を何処にどのように記録するか」であって「如何にしてファイルの改竄を防ぐか」ではない。

623 名前:デフォルトの名無しさん :03/06/06 16:00
>>621
Windowsのバージョンによって違う。(95系、NT系では記録されるファイルから違う)
違いを吸収する為にWindows APIがある。

624 名前:デフォルトの名無しさん :03/06/06 16:02
>>620
いいよ。

625 名前:デフォルトの名無しさん :03/06/06 16:13
>>619
俺のマシン以外ならそれもあり。

626 名前:デフォルトの名無しさん :03/06/06 16:26
一番最初に「暗号化」を思いつかない時点で>>619は(略

627 名前:デフォルトの名無しさん :03/06/06 16:34
ていうか「いじられたくない」なんて誰も言ってねえし。

628 名前:デフォルトの名無しさん :03/06/06 16:44
暗号化と一言で言っても実際やってみればわかるが、非常に面倒で
後々必ず後悔する。真に有効な設定ファイルがどこにあるかさえ
アプリが知っていれば、設定ファイル方式にするのが良いと思われる。
ダミーを作る作らないは自由。作るのは万が一消された場合のバックアップ
の意味が大きいだろうね。
ただ意外に絶対に消されないような安全なフォルダーを発見するのが難し
い。

629 名前:解決補完マン ◆eW8C0JkO9w :03/06/06 16:47
>>626で(略された部分

「天才に違いない。」

630 名前:デフォルトの名無しさん :03/06/06 17:07
>>628
元の論点から外れるが、俺には暗号化の方が圧倒的に簡単に思える。
619のやり方ではプログラムはどうやって正しいファイルを知る事が出来るんだ?
ダミーが無数にあり、ファイル名が不定なんだぞ。

大体データの改変はユーザの自己責任で行われるもので
「絶対に消されないような安全なフォルダー」等を意識するのはおかしい。
それに暗号化が必要な情報は消されても全然困らない。
困るのは情報が漏れる事であり、そんなファイルを一般的な形式で記録するのは
危険極まりない。

631 名前:デフォルトの名無しさん :03/06/06 17:09
暗号化ってXORするだけで効果ある?

632 名前:デフォルトの名無しさん :03/06/06 17:16
ビット反転だけで十分

633 名前:デフォルトの名無しさん :03/06/06 17:33
>>631
昔レインガルドというネットゲーがあったが
ローカルに保存するファイルにそれをやっていて
速攻でクラックされていた

634 名前:デフォルトの名無しさん :03/06/06 17:36
>>631
632も言っているが、効果はある。
プログラミング出来る位の人間には解かれるかもしれないが、絶対に解けない暗号は
在り得ないので、データの重要性に応じて暗号化方式を変えるしかない。
タンスに隠すか、隠し金庫に保管するかで例えると、ビット反転はタンスに隠すかな。



635 名前:デフォルトの名無しさん :03/06/06 17:38
>>628
>ただ意外に絶対に消されないような安全なフォルダーを発見するのが難し
>い。

NTFS限定だけどSystem Volume Informationとか。

636 名前:デフォルトの名無しさん :03/06/06 18:03
皆の衆、これ使え。
http://www.ntl.co.jp/2/product/plugin/

637 名前:デフォルトの名無しさん :03/06/06 18:05
IPアドレスからホスト名って取得できますか?

638 名前:デフォルトの名無しさん :03/06/06 18:07
>>637
GetHostName()を使いなされ。

639 名前:デフォルトの名無しさん :03/06/06 18:10
>>619=>>629
恥の上塗り。

640 名前:デフォルトの名無しさん :03/06/06 18:17
629はただのネタだろ
つまらんけど

641 名前:デフォルトの名無しさん :03/06/06 18:17
>>637
gethostbyaddrかWSAAsyncGetHostByAddr。

642 名前:デフォルトの名無しさん :03/06/06 19:01
つか、レジストリ使うソフトを公開するのは止めろよな。
個人で使ってろ。

643 名前:デフォルトの名無しさん :03/06/06 19:43
レジストリーを使わないソフトって安いっぽいから俺は
レジストリーを使うソフトしか使いたく無いよ
レジストリーの使い方の分からない初心者がINIを使え

644 名前:デフォルトの名無しさん :03/06/06 20:13
変な奴

645 名前:デフォルトの名無しさん :03/06/06 20:35
設定をバックアップしやすいから.iniがいい。

646 名前:デフォルトの名無しさん :03/06/06 20:37
もう完全にスレ違いだな

647 名前:デフォルトの名無しさん :03/06/06 20:41
こんばんは。
さっそくですが、ファイルが変更されたのを通知してもらうような
API はありますでしょうか?
数秒ごとにファイルが変更されたかチェックするのではなく
変更を OS から知らせてもらうようなイメージです。
よろしくお願いします。

648 名前:デフォルトの名無しさん :03/06/06 20:43
>>605
「ちょっとしたツール」でそこまでやるのって
本末転倒というか目的のために手段を選ばないというか
手段が目的化してるというか

649 名前:デフォルトの名無しさん :03/06/06 20:44
>>647
FindFirstChangeNotification
ReadDirectoryChangesW
でぐぐれ

650 名前:デフォルトの名無しさん :03/06/06 20:47
実行可能ファイル書き換えると
ウィルスチェッカーに文句言われる可能性があるし
実行可能ファイルを読み出し専用の場所におけないし
あまりいいことないと思う

651 名前:デフォルトの名無しさん :03/06/06 22:13
>>649
ありがとうごじあます。
さっそくぐぐります。
とりあえずお礼だけ先に^^

652 名前:デフォルトの名無しさん :03/06/06 23:03
現在 SwitchDesktop でデスクトップ切り替えをするツールを作っています
はじめのデスクトップをA、新しいデスクトップをBとしたとき
デスクトップをAからBに切り替えても消えないウィンドウを作るには
どうしたら良いのでしょうか?
SetWindowPosでできそうな気がしたんだけどできない...

653 名前:605 :03/06/06 23:14
>>648
>本末転倒というか目的のために手段を選ばないというか
>手段が目的化してるというか
なんか普段の自分の事言われてるみたい…
自分への戒めとします。ありがd

654 名前:デフォルトの名無しさん :03/06/06 23:33
Hook ってクラス化できるの?
他のコールバック関数みたいに
パラメータ渡せないっぽいし



655 名前:593 :03/06/07 01:15
皆様、たくさんのレスありがとうございます
大変勉強になりました

INI→ファイルが2つになる
レジストリ→嫌いな人が多い。ちょっとしたアプリ程度でレジいじくるなー
複雑な方法→複雑(;´д`)

なかなかままならないものですね
素直に毎回うたせるかな・・・

656 名前:デフォルトの名無しさん :03/06/07 01:36
>>655
「ドラッグインしたファイルを、リストとしてtxtに吐き出すツール」

ショートカットにドラッグする。
本体はtxtと一緒に別のフォルダに置く。

657 名前:デフォルトの名無しさん :03/06/07 04:14
Win32コンソールのアプリケーションを作っています。
で、興味本位でウィンドウを隠して、インジケータに
アイコンを登録してみました。ここまではいいのですが
うまく登録メッセージを受け取ることができません。
サブクラス化もできないし、メッセージのフックも
インストールまではできるのですが結局呼ばれないようです。

だれか、いい方法知りませんか?

658 名前:デフォルトの名無しさん :03/06/07 09:11
>657
意味が分からん
・登録メッセージとは何か
・何のサブクラス化なのか
・何を対象にしたメッセージのフックか
ちゃんと書いてくれ
つかインジケータってタスクトレイのことか?

659 名前:デフォルトの名無しさん :03/06/07 09:47
しかも、コンソールアプリケーションでか?
できんの?

660 名前:デフォルトの名無しさん :03/06/07 10:13
質問の仕方が悪かった
HOOKした時に
SetWindowsHookExの引数に渡した、
HOOKPROC あるでしょ

あのコールバック関数内で、
GetWindowLongみたいに、
ユーザー側で指定した
パラメータ受け取ることって出来ますか?

661 名前:デフォルトの名無しさん :03/06/07 11:11
         ∧_∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        (´∀` )  < 教えておながい
        (    ),,,,,  \____________
     / ̄ ̄ ̄ ̄ ̄/|
    ∧ ∧     / /|
  /_(  ,,)__/ / ┌──────
 || ̄/  | ̄ ̄||/  < ヤダ 
 ||, (___/   ||    └──────
  /


662 名前:デフォルトの名無しさん :03/06/07 11:27
>660
GetWindowLongだったら、ウィンドウハンドルを取れていればできると思うが

663 名前:657 :03/06/07 14:20
なんか適当に書きすぎたみたいで・・・スマソ

やっていることは

コンソールのウィンドウハンドル取得

ShowWindowでSW_HIDEを使って隠す

Shell_NotifyIconでタスクバーにアイコン登録
んで、このときにマウス関連のメッセージを受けるために
WM_APPあたりをNOTIFYICONDATA構造体の
uCallbackMessageにセットしておく

ここからが問題で
ウィンドウプロシージャは自前じゃないので
コンソールのウィンドウハンドルからサブクラス化して
メッセージをもらおうとしたけどだめ。サブクラス化できない。
(SPY++で見てもだめっぽい)

んじゃ、SetWindowsHookEx + WH_GETMESSAGEで
メッセージをフックしてみようと。今度はインストールはできるけど、
フックプロシージャを呼んでもらえないみたい。

んで、なんか他にいい方法思いつく人いませんか?

ってことなんですが、うまくできた人とかいます?(長文スマソ

664 名前:デフォルトの名無しさん :03/06/07 14:24
>>663
隠しウィンドウを一個クリエイトしとけばいいんでないの?
しらんけど。

665 名前:デフォルトの名無しさん :03/06/07 16:20
>フックプロシージャを呼んでもらえないみたい。
DLLにフックプロージャを置いてるか?

666 名前:デフォルトの名無しさん :03/06/07 17:14
>>655
ちなみにその手のデータを置くべきフォルダの、Microsoftによるお勧めは
shfolder.dll内のSHGetFolderPathを使ってフォルダを取得せよ、ってことになってる。
CSIDL_APPDATAかCSIDL_LOCAL_APPDATAでしょうな。

>663
>664の方法に一票。

667 名前:657 :03/06/07 18:35
いろいろレスサンクス
>664
>666
実はすでに隠しウィンドウのほうで実装は済んでるんだけど
コンソールでできないかなぁといろいろ試してみたかったんです。
もしできたら窓作る分のリソースの消費を抑えられるし。

>665
システムフックじゃないからいらないとは思うけど、一応作ってます。
あっ、もしかしたらシステムのフックにすればいいのかな?
試してみます。

やっぱだめみたい。

どうもコンソールは普通の窓とは仕組みが違うみたい。


668 名前:デフォルトの名無しさん :03/06/07 19:04
どう考えても自前のWS_POPUPウィンドウ一枚のほうが
コンソールウィンドウよりリソース食わないと思うが

669 名前:デフォルトの名無しさん :03/06/08 11:58
ListBoxを作成したんですが、途中で複数選択出来るようにするために
SetWIndowLongを実行したんですが、内容が変更できません。
・↑を実行した直後、GetWindowLongを送ると、どうやらちゃんと書きかえられているようです。
・InvalidataRect、UpdateWindowは指定しましたが、駄目でした。

// 複数選択
::SetWindowLong( hList1, GWL_STYLE, GetWindowLong( GWL_STYLE ) | LBS_EXTENDEDSEL ) );

::UpdateWindow( hList1 );
::UpdateWindow( hMainWin );
::InvalidateRect( hMainWin, NULL, TRUE );
::InvalidateRect( hMainWin, NULL, FALSE );
::InvalidateRect( NULL, NULL, TRUE );
::InvalidateRect( NULL, NULL, FALSE );
// ↑を送っても複数選択できず


もしかして、Window自体作り直すしかない?(^〜^;

670 名前:669 :03/06/08 12:05
>>SetWindowLong
書き間違えた。
::SetWindowLong( hList1, GWL_STYLE, ::GetWindowLong( hlist1, GWL_STYLE ) | LBS_EXTENDEDSEL ) );

671 名前:デフォルトの名無しさん :03/06/08 12:50
>669
仕様です。

672 名前:669 :03/06/08 13:54
>>671
ノ---------]TOT[----------!!

673 名前:LBS_MULTIPLESEL :03/06/08 14:36
>>669
俺のことを忘れていないかい・・・

674 名前:669 :03/06/08 15:04
>>673
無理でした。
最初から複数選択可能「LBS_MULTIPLESEL」or「LBS_EXTENDEDSEL」を付けて
ListBox作ると、途中変更が効かない。
何故だ……確かに、変わっているはずなのに…

675 名前:669 :03/06/08 15:11
↑の付けたし。
一度、Windowを作ると、「複数選択」⇔「単一選択」への変更が出来ない。

676 名前:デフォルトの名無しさん :03/06/08 15:55
>669
だから仕様だって。仕様っつうかSDKにちゃんと
「後でスタイル変更しても無効だよ」って書かれている。
取扱説明書を読むのは基本中の基本だよ。

677 名前:669 :03/06/08 16:55
>>676
うそ!?ほんとですか!?
どこに書いてありました?

678 名前:デフォルトの名無しさん :03/06/08 17:28
>>677
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listboxes/listboxreference/listboxstyles.asp
After the control has been created, these styles cannot be modified, except as noted.


679 名前:デフォルトの名無しさん :03/06/08 17:33
>>678
>except as noted.
がポイントだな。

680 名前:デフォルトの名無しさん :03/06/08 23:18
システムフックについて質問です。
CallNextHookExはいったい何をする関数なんでしょうか?
「次のフックを呼び出す」の意味がイマイチ分かりません。
アドバイスお願いします。

681 名前:デフォルトの名無しさん :03/06/08 23:56
>680
ttp://www.kab-studio.com/Programing/Codian/DLL_Hook_SClass/07.html


682 名前:669 :03/06/09 00:32
>>678-679
激しくサンクス!
勉強不足だな…オレ。英語ニガテだし。

683 名前:デフォルトの名無しさん :03/06/09 01:12
ユーザーインターフェースをwin32api以外のなかに無い奴とかダウンロードできますか?
あるとこ教えてください
例えば丸いつまみを回すやつとか

684 名前:無料動画直リン :03/06/09 01:13
http://homepage.mac.com/norika27/

685 名前:_ :03/06/09 01:13
http://kame.kakiko.com/hiroyuki/hankaku_b01.html

686 名前:デフォルトの名無しさん :03/06/09 01:19
>>683
MSDNを見れば、丸だろうが三角だろうが、好きな形のカスタムコントロールを
作成できるだけの情報は詰まっていると思います。
どこが出来ないかを聞いたほうがいいのではないでしょうか?


687 名前:デフォルトの名無しさん :03/06/09 01:22
>>686
初めから出来てる奴を使いたいのです

688 名前:デフォルトの名無しさん :03/06/09 03:25
>>687
用意はされていないよ。凝ったコントロールは
そこの会社のプログラマが一生懸命作ったものだから。
そこに尋ねるのがいいと思います。

689 名前:デフォルトの名無しさん :03/06/09 09:46
>>687
じゃあ、スレ違い。

690 名前:デフォルトの名無しさん :03/06/09 13:46
>>689

これではまるで役所のたらいまわしだな(w

691 名前:デフォルトの名無しさん :03/06/09 14:05
Windowsで ファンの回転数等を知るにはどうしたらよいのでしょうか?
Linuxでは Lm_sensorの出力を加工して使っていました。

692 名前:デフォルトの名無しさん :03/06/09 16:33
みんな、だまされるな!
> win32api以外のなかに無い奴
だからつまりwin32apiのなかにある奴ってことだ!

693 名前:デフォルトの名無しさん :03/06/09 17:13
ASM

694 名前:デフォルトの名無しさん :03/06/10 00:14
InvalidateRect()とInvalidateRgn()はどう使い分けるんでしょうか??
またUpdateWindow()とは。

695 名前:デフォルトの名無しさん :03/06/10 00:42
Rgn+=Rect
Rgn+=Rgn

InvalidateRect(h,0,1);
SendMessage(h,WM_PAINT);

696 名前:デフォルトの名無しさん :03/06/10 10:14
複数のスレッドからアクセスされるintのグローバル変数にはvolatileを
指定したりしますよね。
でもなぜか基本型以外のグローバル変数にはvolatileをつけているのを見ません。
なぜですか?

697 名前:デフォルトの名無しさん :03/06/10 10:17
それ本当にこのスレで質問する内容なん?

698 名前:デフォルトの名無しさん :03/06/10 11:53
>>694
InvalidateRect()は、
指定した矩形を更新リージョンに追加する関数
InvalidateRgn()は、
指定した非矩形(矩形も可)を更新リージョンに追加する関数

UpdateWindow()は、
指定されたウィンドウの更新リージョンが空ではない場合、
ウィンドウへ WM_PAINT メッセージを送信し、
そのウィンドウのクライアント領域を更新する関数

699 名前:デフォルトの名無しさん :03/06/10 12:08
>>697
そういうレスはいらないです。あなたの発言でみんなが関わり合いを
避けて結局回答が得られなくなります。

省いてますがintはvolatileなのに、クリティカルセクションやイベントハンドルなどが
volatileでなかったことから質問しているのです。だから安心してください。


700 名前:デフォルトの名無しさん :03/06/10 12:17
>>699
いや、そういうレスもらわないように最初からそう書けよ。

701 名前:デフォルトの名無しさん :03/06/10 12:21
ではそういう事情ですのでよろしくお願いします。


702 名前:デフォルトの名無しさん :03/06/10 12:23
クリティカルセクションやイベントハンドルは
ユーザーの最適化コードが複数のスレッドから
直接触るわけじゃないから。

703 名前:デフォルトの名無しさん :03/06/10 12:28
回答ありがとうございます。
つまりクリティカルセクションやイベントハンドルはそれらを扱う
APIが内部でそのことを考慮してうまく設計されてるからOK。
ということでしょうか?


704 名前:デフォルトの名無しさん :03/06/10 12:30
Yes

705 名前:デフォルトの名無しさん :03/06/10 12:32
非常に良く分かりました。ありがとうございます。
どうもお騒がせしました。



706 名前:デフォルトの名無しさん :03/06/10 12:34
とまぁ、696はvolatileの意味を誤解したまま終わってしまったわけだが。

707 名前:デフォルトの名無しさん :03/06/10 12:36
それはこのスレの守備範囲外だから
このスレ的にはクリティカルセクションやイベントハンドル
についてだけ答えてればOKでしょ

708 名前:51 :03/06/10 12:56
API が考慮していようといまいと、自分でコードを追えない部分に volatile
が必要なほど過激な最適化は、少なくともMSのコンパイラではやらないと思うが
→じゃあ逆に int の引数については API が考慮してないって事か?

709 名前:デフォルトの名無しさん :03/06/10 12:58
コンパイラの最適化対策とAPIの内部動作の問題は全く別なのだが
スレ違いだから誤解したままでいてもらおう

710 名前:デフォルトの名無しさん :03/06/10 13:01
>>708
スレ違いだから微細は省くが最適化による無限ループにはまって悩むが良かろう
>少なくともMSのコンパイラではやらないと
馬鹿は痛い目を見なければわからん

711 名前:デフォルトの名無しさん :03/06/10 13:16
すれ違いというルールを厳格に主張する奴は目的を見失ってるね。
例えそれが純粋にAPIに関することから始まり、最終的にはコンパイラや
OSの内部の問題になったとしてもそこまで指摘することは自然なことだし
議論としては継続しているじゃないですか。
そのことがスレッドを読みにくくするんですか。

スレ違いなどというものを厳密に守った結果、助言としては誤解を与え得る
中途半端なものになっては本末転倒だが、妙なこだわりに取り付かれた人たちに言っても無駄か。



712 名前:デフォルトの名無しさん :03/06/10 13:32
>>711

どこかで見たようなバカだな。

713 名前:デフォルトの名無しさん :03/06/10 13:41
マルチスレッドの実行では volatile よりも何よによりも
ミューテックスやセマフォでロックかけてデータアクセスの同期
取る方が先に来るんじゃ
volatile 付けときゃOKというわけではあるまい

714 名前:694 :03/06/10 13:51
>>698
遅レスですみません。
MSDNよりずっとよくわかりました。
どうもです。

715 名前:デフォルトの名無しさん :03/06/10 13:58
>>712
あんたのほうがバカっぽいよ。

716 名前:デフォルトの名無しさん :03/06/10 14:00
よーしパパ、スレ違いな質問をしまくっちゃうぞぉ。

717 名前:デフォルトの名無しさん :03/06/10 14:04
>>696は明らかにスレ違いだぞ。
> 複数のスレッドからアクセスされるintのグローバル変数にはvolatileを
> 指定したりしますよね。
> でもなぜか基本型以外のグローバル変数にはvolatileをつけているのを見ません。
> なぜですか?
と問われても、基本型にvolatileの記述が強制されている訳でもないし、基本型以外に
volatileの記述が禁止されている訳でもないから、意図など分かる訳がない。
コーディングした奴に聞けとしか言えん。

> 省いてますがintはvolatileなのに、クリティカルセクションやイベントハンドルなどが
> volatileでなかったことから質問しているのです。だから安心してください。
何が安心してくださいだ。逝って良し!!

718 名前:デフォルトの名無しさん :03/06/10 14:04
>>711
コピペに使えるな。もらっておこう。

719 名前:_ :03/06/10 14:13
http://homepage.mac.com/hiroyuki44/hankaku06.html

720 名前:デフォルトの名無しさん :03/06/10 14:42
>>715
この板から出てって下さい。ウザイです。

721 名前:デフォルトの名無しさん :03/06/10 15:55
>718
ワロタ。オレももらうよ。早く使える日が来ないかな。

722 名前:デフォルトの名無しさん :03/06/10 16:16
ファイルの存在チェックとリネームの良いやり方ってありますか?
ShellExecuteとSHFileOperationをつかってたんだけど
もっとスマートな方法がありそうなきがして…

723 名前:デフォルトの名無しさん :03/06/10 16:26
>>722
FindFirstFileとかMoveFileはどうよ?

724 名前:デフォルトの名無しさん :03/06/10 16:42
>>722
それでいいんじゃないの。
俺もFindFirstFile使うけど、別にこれがスマートって訳じゃないし。

725 名前:デフォルトの名無しさん :03/06/10 16:53
すいません、質問させて下さい。
Windows2000のDocuments and Settingsフォルダのパス情報を取得するAPIってあるのでしょうか?
テンポラリフォルダのパスを取得するAPIがあるのは知っているので、このAPIで取得したパスから
フォルダ階層をさかのぼっていけば取れるとは思うのですが、もっとスマートな方法をご存知でしたら
アドバイス下さい。
よろしくお願いします。


726 名前:デフォルトの名無しさん :03/06/10 17:07
>>725
SHGetSpecialFolderLocation
SHGetPathFromIDList
このへんを調べてみたら

727 名前:デフォルトの名無しさん :03/06/10 17:09
>>725
GetProfilesDirectoryはどうよ?

728 名前:デフォルトの名無しさん :03/06/10 17:15
>>725
SHGetSpecialFolderLocationでCSIDL_PROFILESが使えるはず・・・

729 名前:デフォルトの名無しさん :03/06/10 18:31
>>722
存在チェックはPathFileExists使ってる。
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
だけど。

730 名前:デフォルトの名無しさん :03/06/10 18:35
>>722
GetFileAttributesがエラー返したら存在しない。強引かも

731 名前:デフォルトの名無しさん :03/06/10 19:08
>>725
CSIDL_PROFILES てのがあるではないか。
OSのバージョン知らないけど。


732 名前:デフォルトの名無しさん :03/06/10 19:23
つーか、普通 FileExists じゃねえの?

733 名前:デフォルトの名無しさん :03/06/10 19:31
>>732
どこの普通だ

734 名前:デフォルトの名無しさん :03/06/10 19:33
>>733
WSHじゃない?

735 名前:デフォルトの名無しさん :03/06/10 19:37
>>732
おまえみたいなのがいるからVB厨と言われるんだヽ(`Д´)ノウワァァァン!

736 名前:デフォルトの名無しさん :03/06/10 19:40
>>735
いや、VCL厨かもよ

737 名前:デフォルトの名無しさん :03/06/10 19:49
CSIDL_PROFILE
のすぐ上がすべてのユーザのルートだと思うよ。


738 名前:725 :03/06/10 20:10
726、727、728、731、737さん、アドバイスありがとうございます。
まだ試してないんですが、まずはお礼を。


739 名前:デフォルトの名無しさん :03/06/10 20:27
>>711
同意

740 名前:デフォルトの名無しさん :03/06/10 21:02
迷惑だからスレ違い野郎を弁護しないでくれ

741 名前:デフォルトの名無しさん :03/06/10 21:14
質問お願いします。
SetBkColorで背景色を設定することは背景ブラシの色を(ブラシの種類は
そのままに)変更することと同じではないのでしょうか?
というのはRectangle()のときに内部の塗りつぶし色にSetBkColor()で
設定した色が反映されないもので...。
MSDNからでは読み取れないものでよろしくお願いいたします。

742 名前:デフォルトの名無しさん :03/06/10 21:22
>>741
ttp://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_setbkcolor.htm
この関数は、CreatePen 関数を使って作成したペンで描いたスタイル付きの複数の線の
隙間を塗りつぶします。しかし、ExtCreatePen 関数を使って作成したペンで描いたスタイル
付きの複数の線の隙間は塗りつぶしません。また、SetBKColor 関数は、TextOut と
ExtTextOut の各関数の背景色も設定します。

背景モードが OPAQUE の場合、背景色は、スタイル付きの複数の線の隙間、ブラシの
ハッチ線の隙間、文字の背景を塗りつぶすのに使われます。また、ビットマップをカラー
からモノクロームまたはその逆へ変換するときにも使われます。

743 名前:デフォルトの名無しさん :03/06/10 21:22
SetBkColorはテキストの背景色だな

744 名前:デフォルトの名無しさん :03/06/10 21:30
>>742-743
テキストの背景色だけなんですね。
ずっとVBをやってたもので背景色全部だと思ってしまいました。
ありがとうございました。

745 名前:デフォルトの名無しさん :03/06/10 21:35
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉




(^^)

746 名前:デフォルトの名無しさん :03/06/10 21:42


   彡川川川三三三ミ〜
   川|川/  \|〜 プゥ〜ン
  ‖|‖ ◎---◎|〜        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  川川‖    3  ヽ〜      < (*´д`*)ハァハァハァ
  川川    ∴)д(∴)〜       \_______________
  川川      〜 /〜 カタカタカタ
  川川‖    〜 /‖ _____
 川川川川___/‖  |  | ̄ ̄\ \ ←>>1-1000
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ   |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄




747 名前:デフォルトの名無しさん :03/06/10 21:50
>>737
移動プロファイルでZ:\になっていた罠とかないの?

748 名前:732 :03/06/10 22:41
ぐぁ、スレ間違えてたよ(;´Д`)
逝ってくる。

749 名前:デフォルトの名無しさん :03/06/10 23:17
CreateThreadによって作成された複数のスレッドから
外部のDLLにある関数を呼ぶときは関数の呼び出しの前後を
クリティカルセクションで囲む必要があるのでしょうか?

750 名前:デフォルトの名無しさん :03/06/10 23:36
>>749
ということはAPIを一つ呼ぶのにいちいちクリティカルセクションで囲んでいるのか?
クリティカルセクションを使うためには、それ自体も外部のDLLにある関数を使う必要があるが、
クリティカルセクションを使うためにクリティカルセクションを使うのか?
クリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うのか?
クリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うのか?


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