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


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

Win32API質問箱 Build33
501 名前:デフォルトの名無しさん :2005/07/13(水) 23:09:55
まあ、fuckのまま直そうとしないヤツには何を言っても無駄だな。

502 名前:デフォルトの名無しさん :2005/07/13(水) 23:20:33
#define fuck Hook

503 名前:デフォルトの名無しさん :2005/07/14(木) 00:18:15
教えてください。
プログラム動作中にPCがサスペンドに入らないようにしたいのですが、
どうすればよいのでしょうか?

504 名前:デフォルトの名無しさん :2005/07/14(木) 00:18:59
見張る

505 名前:デフォルトの名無しさん :2005/07/14(木) 00:24:36
PBT_APMQUERYSUSPEND属性のWM_POWERBROADCASTメッセージを受け取ったら、BROADCAST_QUERY_DENYを返す

506 名前:デフォルトの名無しさん :2005/07/14(木) 00:24:46
CreateProcessが成功しません。仕方ないのでsystem関数使ってますが、コマンドライン引数にディレクトリのパスを入れたりする場合、デスクトップ上で動かすと失敗するという欠点があります。(※パスに空白があるからパスが分断される)
似たような失敗した経験のある方はいませんか?いれば、アドバイスをお願いします。

507 名前:デフォルトの名無しさん :2005/07/14(木) 00:35:54
SDKですがダイアログアプリでボタンがあるときに
ダイアログでKEYイベントが回ってきません。
PreTranslateMessageで回避できるような記述を見かけたのですが、
これはMFCでないと使えないのでしょうか?
使えない場合、SDKではどうすればよいのでしょうか?
(ボタン無効化は無しで)

508 名前:デフォルトの名無しさん :2005/07/14(木) 01:14:53
>>506
パスを " で括ってる?

509 名前:デフォルトの名無しさん :2005/07/14(木) 03:26:14
>>506
ヘルプに書いてるやん

510 名前:デフォルトの名無しさん :2005/07/14(木) 03:53:56
ちと教えてください。

親ウィンドウのWM_CREATEでCreateDialogを呼び出して
ダイアログを親ウィンドウの子として表示させているのですが、
ダイアログ内のEditBoxでtabキーを押してもフォーカスが移動しません。
tabキーでフォーカスを移動できるようにするには、ウィンドウスタイルをどのように設定すればいいのでしょうか?

現在、
親ウィンドウには子になるダイアログとCreateWindowで作成した複数のStaticコントロールがあり、CreateWindowExで
WS_EX_WINDOWEDGE, WS_EX_CONTROLPARENT, WS_OVERLAPPEDWINDOWを設定してます。

ダイアログの方には複数のStaticとEditBoxがあり
WS_EX_CONTROLPARENT, DS_CONTROL, WS_CHILDを設定してます。
また、ダイアログ内のEditBoxにはすべてWS_TABSTOPを設定してます。

将来的には親ウィンドウ内にWS_TABSTOPを持つもう一つの子ウィンドウを作って、
子ウィンドウとダイアログ内のコントロール間をtabキーでフォーカスが行き来するようにしたいと考えてます。


Spyで似たような構成になっているウィンドウのスタイルを調べてみたけど、
フォーカスが移動しない原因がさっぱり分かりませんでしたorz

511 名前:デフォルトの名無しさん :2005/07/14(木) 04:28:01
>>510
IsDialogMessage?

512 名前:デフォルトの名無しさん :2005/07/14(木) 10:35:31
今、猫でもわかるプログラミングのSDK77章やっております。
その中に、win.iniの中にプリンタのドライバ名やデバイス名が書いてる、とあるのですが
どう探しても、そんなものは書いてありませんでした。
最近のパソコンは違うのでしょうか?(当方XP)

なんとか調べる方法を教えていただけませんか?

513 名前:512 :2005/07/14(木) 10:47:25
申し訳ありません。
自己解決しました。
GetProfileString関数を使えば良かったんですね・・・。
どうもありがとうございました。

514 名前:デフォルトの名無しさん :2005/07/14(木) 10:55:55
>>512
MSDN

515 名前:デフォルトの名無しさん :2005/07/14(木) 11:26:46
リストボックスコントロールの項目名を変更する方法はありませんか?
LB_DELETESTRINGとLB_INSERTSTRINGを使うしかないのでしょうか。

516 名前:デフォルトの名無しさん :2005/07/14(木) 11:31:51
LVITEM構造体使った変更方法があったはず
LVM_SETITEM

517 名前:デフォルトの名無しさん :2005/07/14(木) 11:32:27
ってリストボックスか、スマソ

518 名前:デフォルトの名無しさん :2005/07/14(木) 11:38:05
SetWindowText()でできたら便利だと思うがどうかな

519 名前:515 :2005/07/14(木) 11:50:34
>>518
選択されている項目のハンドルって取れますっけ?
取れればそれでいけそうな気が。

520 名前:518 :2005/07/14(木) 12:12:19
無理でした・・
MFCのCListBoxでも文字列置換の関数がなかった

521 名前:デフォルトの名無しさん :2005/07/14(木) 13:57:50
こんにちは。

ListCtrlのカラム部分のタイトル文字列を変えたい場合は、どうすればいいのでしょうか?

522 名前:515 :2005/07/14(木) 14:15:17
>>520
ありがとうございます。
別のコントロールで代用することにします。

523 名前:510 :2005/07/14(木) 14:58:27
>>511
それでしたorz
こんな初歩的なミスくらい気付よ俺orz

524 名前:デフォルトの名無しさん :2005/07/14(木) 15:28:45
ツールバーの作り方を勉強しているのですが
TBBUTTON tbb[]={{0, IDM_MARU, TBSTATE_ENABLED, BTNS_BUTTON}};
のようにTBBUTTON構造体のfsStylオプションを
BTNS_BUTTONやBTNS_SEPに指定してビルドすると、
「error C2065: 'BTNS_BUTTON':定義されていない識別子です」
とエラーが出てしまいます
プログラム自体は初歩本のサンプルそのままですので、設定の問題だと思うのですが
どのように設定すればよいか教えていただけませんか?

comct32.libをリンクせよ、と書いてあったので、
プロジェクトの設定>リンク>オブジェクト/ライブラリモジュールの最後に
comct32.libを書き加えましたがダメでした
環境は VC++6.0、WINXPです、comct32.dllはHDD内を検索した所8個あり
c\WINDOWS\system32にバージョン5.82が1つ
c\WINDOWS\WINDOWS\WinSxS\〜〜〜 に6.0が2つ
C\WINDOWS\SoftwareDistribution\Download に5.82が2つ、6.0に5つあります

宜しくお願いします

525 名前:524訂正 :2005/07/14(木) 15:31:01
C\WINDOWS\SoftwareDistribution\Download に5.82が2つ、6.0に5つあります
>C\WINDOWS\SoftwareDistribution\Download に5.82が2つ、6.0が3つあります

526 名前:デフォルトの名無しさん :2005/07/14(木) 15:32:51
>>524
コンパイルエラーが、
リンクにライブラリを追加して解決するわけがない

commctrl.hをインクルードすりゃいいと思うぞ

527 名前:524 :2005/07/14(木) 15:42:41
526様、レスありがとうございます

ただ・・commctrl.hはインクルードしてますがダメでした・・・・
インクルードは
#include <windows.h>
#include <commctl.h>
#include "resource.h"
となっております

528 名前:デフォルトの名無しさん :2005/07/14(木) 15:46:39
Platform SDK

529 名前:デフォルトの名無しさん :2005/07/14(木) 15:58:55
>>527
定義くらい読め

#if (_WIN32_IE >= 0x0500)
#define BTNS_BUTTON TBSTYLE_BUTTON // 0x0000

530 名前:デフォルトの名無しさん :2005/07/14(木) 17:32:52
VC6付属のCommCtrl.hには、何万年探してもそんな部分は無い。

531 名前:524 :2005/07/14(木) 17:43:38
レスありがとうございます
色々調べてみたのですが分からないので再度質問させてください

Platform SDK ですがインストールしてみましたが、ビルドできませんでした
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
のPSDK-amd64.exeとPSDK-ia64.exeは32ビット環境ではダメとメッセージが出たので
PSDK-x86.exeをダウンロード・インストールしました
CPUはペンティアムV800MHZですが、ダウンロードするのが違いましたでしょうか?

529様のレスについてですが
正直知識不足で、せっかくレスして頂いたのに申し訳ありませんが
どういう意味か全く理解できませんでした、ググって見て関係ありそうなのを探し
プログラムの最初に #define _WIN32_IE 0x〜〜〜を色々な数字で加えてみたのですが
ビルドできず、「定義されていない識別子です」エラーが増えるだけでした

お手数おかけしますが、もう少々詳しく教えていただけませんか?
宜しくお願いします

532 名前:デフォルトの名無しさん :2005/07/14(木) 18:24:45
MouseProcでWH_MOUSEをフックし、WM_MOUSEWHEELを
つかまえたのですが、wParamにWM_MOUSEWHEELが入っているため
デルタの値がわかりません。
ホイールのデルタ値はどうやったら取得出来ますか?

533 名前:デフォルトの名無しさん :2005/07/14(木) 18:44:02
>>524
まずは grep の使い方を覚えろ。
そして、問題の識別子を grep で検索汁。

534 名前:デフォルトの名無しさん :2005/07/14(木) 18:45:28
>>531
そのSDKは、VC6.0をサポートしてないと書いてあるやうな・・・

535 名前:デフォルトの名無しさん :2005/07/14(木) 18:46:42
>>532
WH_MOUSE_LL で Low Level mouse hook すれば、
MSLLHOOKSTRUCT::mouseData で取得できるっぽい

536 名前:デフォルトの名無しさん :2005/07/14(木) 19:13:19
>>534
げ、いつのまに…

537 名前:デフォルトの名無しさん :2005/07/14(木) 20:32:04
CreateWindow()を使って、子ウィンドウを親ウインドウ上に貼り付けて
主に描画用として使用しています。
プロシージャはそれぞれ独立させています。

子ウィンドウの上ではWM_KEYDOWNが反応しなかったり、
親ウィンドウはWM_LBUTTONDOWNが反応ないこと
が起こってしまいます。

こういう場合は親子間のウィンドウでメッセージ
をやり取りするしかないんでしょうか。

538 名前:デフォルトの名無しさん :2005/07/14(木) 20:33:46
GetClassInfoExが動きません。
自プロセスのウインドウなら動作するのですが、
FindWindowで見つけた他プロセスのウインドウでは全て失敗してしまいます。
MSDNに特に明記は無いのですが、こういうものなのでしょうか?

hWndTar=FindWindow("IEFrame",NULL); //IEの場合
TCHAR wclass[1024];
GetClassName(hWndTar,wclass,1024-1);
HINSTANCE hInstTar=(HINSTANCE)GetWindowLong(hWndTar,GWL_HINSTANCE);
WNDCLASSEX wcex;
ZeroMemory(&wcex,sizeof(WNDCLASSEX));
wcex.cbSize = sizeof(WNDCLASSEX);
if (GetClassInfoEx(hInstTar,wclass,&wcex)) {
} else {
GetLastErrorで"そのクラスはありません"と出る
}

ご存知の方ぜひご教授ください。宜しくお願いします。


539 名前:デフォルトの名無しさん :2005/07/14(木) 20:38:58
>>537
子ウインドウを親のクライアント領域いっぱいに貼り付けてるのか?
だったら、WM_LBUTTONDOWNは子ウインドウにいくし
WM_KEYDOWNは、(フォーカスを子ウインドウに設定しなければ)親に行く。

540 名前:デフォルトの名無しさん :2005/07/14(木) 21:24:40
>>538
各APIは成功してるか確認した?

541 名前:416 :2005/07/14(木) 21:25:36
>499
なんだ、そうですか。
>>459 を見てから、
もうやらなくていいんだーと思って休憩してたので、
また色々と調べてみますね。

542 名前:532 :2005/07/14(木) 21:34:08
>>535
LowLevelフックですか、ありがとうございます
やってみます

543 名前:538 :2005/07/14(木) 22:24:49
>540
もちろん、GetClassInfoEx()以外はすべて成功しています。


544 名前:デフォルトの名無しさん :2005/07/14(木) 22:38:48
The Old New Thingには、
http://blogs.msdn.com/oldnewthing/archive/2005/04/18/409205.aspx
>Each process has its own window class list
とあるね。

545 名前:デフォルトの名無しさん :2005/07/14(木) 22:58:19
質問です

546 名前:デフォルトの名無しさん :2005/07/14(木) 22:59:54
>>545
何を__?

547 名前:545 :2005/07/14(木) 23:02:08
自己解決しました

548 名前:538 :2005/07/14(木) 23:17:25
>544
「プロセス毎にクラスリストをもっている」って事なんですかね???
すみません、英語苦手なんで明日会社で翻訳してみます。
ありがとうございました。

549 名前:デフォルトの名無しさん :2005/07/14(木) 23:37:31
ダイアログ作るためにリソーススクリプト書いて
BCCのBRC32コマンドでリンクしたら
Error ****.exe 1 5: Bad character in source input
とでます。
最初でたときは、「どこかで変な文字入れたかな」と思い、書き直したのですが
2度目もやっぱりでました。どうすればいいというんだ・・・orz

550 名前:デフォルトの名無しさん :2005/07/14(木) 23:42:20
>>549
問題が出たスクリプトを書かないとなんとも言えない。
エラーの内容からは変な文字入れたということしか判断つかない。

ま、ありがちなのは全角空白使ってるとかだな。

551 名前:デフォルトの名無しさん :2005/07/14(木) 23:48:44
>>550
IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 319, 600
STYLE WS_POPUP | WS_VISIBLE
EXSTYLE WS_EX_APPWINDOW
FONT 9, "MS Pゴシック"
BEGIN
END

IDD_DIALOG2 DIALOG DISCARDABLE 0, 0, 319, 200
STYLE WS_POPUP | WS_VISIBLE
EXSTYLE WS_EX_APPWINDOW
FONT 9, "MS Pゴシック"
BEGIN
END

といった感じなのですが・・・

552 名前:デフォルトの名無しさん :2005/07/14(木) 23:55:42
漢字コードかな?

553 名前:デフォルトの名無しさん :2005/07/14(木) 23:58:13
>>549
ファイル名が***.exeってのはおかしいな。
コマンドラインの指定は合ってる?

554 名前:デフォルトの名無しさん :2005/07/14(木) 23:59:06
リストビューに関する質問です。
ENTERキーの入力を検出したくて
NM_RETURN通知メッセージを待つようにしたのですが、
なぜかENTERキーを押しても通知されません。
LVN_KEYDOWN通知メッセージでNMLVKEYDOWN構造体の
wVKeyメンバを調べる方法も試したのですが、
なぜかENTERキーだけが通知されませんでした。
ENTERキーの入力はどのようにして
検出すればよいのでしょうか?

555 名前:デフォルトの名無しさん :2005/07/15(金) 00:01:25
>>553
ごめん、それ実行ファイル名隠してるだけです
分かりづらかったっすね^^;

556 名前:デフォルトの名無しさん :2005/07/15(金) 00:02:21
>>536
ちなみに古いSDKは>>5にあるのでまだ落とせるうちに落としておくこと激しく推奨

557 名前:デフォルトの名無しさん :2005/07/15(金) 00:18:32
>>555
リソーススクリプトじゃなくてexeファイルが
入力になってるんじゃないかってこと。
ちなみにbrc32のコマンドラインは
brc32 [options] <filename>.RC [<filename>.EXE]
だが、EXEを先にしてみたら同じエラーが出たよ。

558 名前:デフォルトの名無しさん :2005/07/15(金) 00:22:02
>>557
やってみたらできた・・・orz
ありがとうございます。なんかもう、やってらんね('A`)

559 名前:デフォルトの名無しさん :2005/07/15(金) 06:05:54
CreateFileでテキストファイルを開き
ReadFileで一行づつテキストを読み込むにはどうしたらいいのか教えてください

ReadFileの引数には読み込みバイト数を渡せるのですが
一行の長さは決まっているわけではありませんし
どうしたらいいのか分かりません

宜しくお願いします

560 名前:デフォルトの名無しさん :2005/07/15(金) 06:10:33
MFCのCStdioFile::ReadStringのソースを参考にする

561 名前:デフォルトの名無しさん :2005/07/15(金) 06:43:06
一バイトずつ読み込んでCRやLFが出たらやめる

562 名前:デフォルトの名無しさん :2005/07/15(金) 07:23:15
>>559
ReadFileはバイト単位でしか読み込むサイズを指定できないから1行毎の読み込みには向いていない。
std::ifstreamとstd::getlineなんかを使うほうが楽。

563 名前:デフォルトの名無しさん :2005/07/15(金) 08:02:33
1バイトずつapi呼んでたら遅くてかなわんな

564 名前:デフォルトの名無しさん :2005/07/15(金) 08:14:03
>>559
バッファリングすれば?

何でもAPIでやれると思ってしまうのが最近の初学者の悪い癖。
WinAPIみたいな低レベル層では、APIで何をするかではなく、
APIで何を実装するか、を考えるべき。

565 名前:デフォルトの名無しさん :2005/07/15(金) 08:57:40
ファイルハンドルから、オープンしているファイルのパス名を取得する方法ってありませんか?

566 名前:デフォルトの名無しさん :2005/07/15(金) 09:07:38
ファイルのパス名知らないとオープンできないような気がするが

567 名前:デフォルトの名無しさん :2005/07/15(金) 09:11:40
そもそもそのオープンしているものがファイルだという保障が無いです。

568 名前:538 :2005/07/15(金) 09:30:40
>544
「インスタンスハンドルとクラス名の組み合わせで判定してるので、クラス名が重なっても平気」
って事でしょうか。
やはりGetClassInfoExが動かない理由がいまいちよくわかりません。

569 名前:デフォルトの名無しさん :2005/07/15(金) 10:08:47
インスタンスハンドルって他プロセスでは使えなかった希ガス。
つまりGetWindowLongで取得したHINSTANCEは
そのウィンドウが所属するプロセスのみで有効な値ってこと。

570 名前:デフォルトの名無しさん :2005/07/15(金) 10:32:21
>>566-567
つまり不可能ってことですか?
(オープンしてるのが、HDDのファイルなのは間違いないんですが)

571 名前:デフォルトの名無しさん :2005/07/15(金) 10:36:45
実質的には
・HINSTANCE=HMODULEの値はモジュールがプロセスにマップされたアドレス
・.exeのHINSTANCEは常に固定
じゃなかったか?

572 名前:デフォルトの名無しさん :2005/07/15(金) 11:30:52
>>560-564
有難う御座います

APIだけだと一文字づつ読んでいくしかないようですね

std::ifstreamやfopenよりもWin32APIでファイル入出力した方が
安全というような話を聞いた事があったのでAPIでやりたかったのです

とりあえずReadFileで改行まで一文字づつ読むコードを書いてみて
速度的に問題が無いか検討してみます

573 名前:デフォルトの名無しさん :2005/07/15(金) 12:16:05
getosfhandle
みたいな名前のやつ

574 名前:デフォルトの名無しさん :2005/07/15(金) 12:42:14
>>572
fopenとかも、結局は中でAPI呼んでるだけ

妙ちきりんなコードを書くよりは安全だと思うなw

575 名前:デフォルトの名無しさん :2005/07/15(金) 12:44:32
何が安全なのか分かってない希ガス。

576 名前:デフォルトの名無しさん :2005/07/15(金) 12:44:38
>>572
>std::ifstreamやfopenよりもWin32APIでファイル入出力した方が
>安全というような話を聞いた事があったのでAPIでやりたかったのです
>
>とりあえずReadFileで改行まで一文字づつ読むコードを書いてみて
>速度的に問題が無いか検討してみます

どうしてもWin32APIだけで高速に処理したいならファイルマッピングを勧める。
そうじゃなくて単にバッファリングするなら、おとなしくifstream使った方が良いし。

577 名前:デフォルトの名無しさん :2005/07/15(金) 12:47:14
ウィンドウクラスやインスタンスハンドルは
プロセス毎に持っていることを考えれば
GetClassInfoEx で別プロセスのクラス情報取得
できないことぐらい分かるだろうに。


578 名前:538 :2005/07/15(金) 13:53:07
>577
そうなんですか。ありがとうございます。
インスタンスハンドルやモジュールハンドルについて根本的に勉強する必要がありそうですね。
インスタンスハンドルとは一言で言うと何なんでしょうか?
ご教授よろしくお願いします。
また、これらについて詳しく書かれたサイト等ご存知ないでしょうか?


579 名前:デフォルトの名無しさん :2005/07/15(金) 13:55:30
>>577
SPY++ はどうやって抜き出してるのか気になるトコロ… (プロパティで WNDCLASS とれてるし)
HELPER あたりになにかあるんかな?

580 名前:デフォルトの名無しさん :2005/07/15(金) 14:42:41
フックじゃね?

581 名前:デフォルトの名無しさん :2005/07/15(金) 15:51:20
俺は過去に改行にぶち当たるまで1バイトずつReadFileするプログラムを作ったことがあるが速度的に全く気にならなかったぞ

582 名前:デフォルトの名無しさん :2005/07/15(金) 15:53:43
>>581
俺も似たようなことしたことがあるよ。
WinApiって思ったより動作速いよね、描画以外。

583 名前:デフォルトの名無しさん :2005/07/15(金) 16:14:26
API

584 名前:デフォルトの名無しさん :2005/07/15(金) 16:51:47
>>582
> WinApiって思ったより動作速いよね、描画以外。

( ゚д゚)ポカーン

585 名前:554 :2005/07/15(金) 20:03:32
自己解決しますた
ttp://www.codeguru.com/forum/archive/index.php/t-126755.html

586 名前:デフォルトの名無しさん :2005/07/15(金) 20:20:58
>>572
常識的に、そういうケースではバッファリングという手法を使う。
これは、一度手元の一時保管領域(バッファ)に一気にデータを(ReadFile()で)取得しておき、
必要に応じて必要な分(今回のケースでは1バイト)づつデータを取りだして本来の作業を行う。
バッファの分を使い切ったら、また一気にバッファにデータを取得して作業・・・を繰り返す。

APIを呼ぶのはローカルの関数を呼ぶのよりコストがかかるので、API呼び出しを極力行わなわず、
ローカル関数の呼び出しで代替する、という高速化手法なわけ。
これを自動的に行ってくれるのが、Cのf〜ファイル関数や、C++のiostream等のライブラリ。
> Win32APIでファイル入出力した方が安全
なんてのは根拠無しで言うのはナンセンス。普通は素直に標準ライブラリを使うべき。


587 名前:デフォルトの名無しさん :2005/07/15(金) 21:03:10
CreateFileでFILE_FLAG_NO_BUFFERINGを指定しない限りはデフォルトでReadFileの内部のスタティック変数にバッファリングされてる。
1バイトずつ読む場合でもReadFileの内部では一回目で既にファイルの内容がいくらかメモリに読み込まれてしまってる。
つまりReadFileの二回目以降はしばらくメモリへのアクセスになると思われ。

588 名前:デフォルトの名無しさん :2005/07/15(金) 21:09:22
そんなんに頼るくらいなら最初から必要と思われるだけバッファリングした方がはるかにマシ

589 名前:デフォルトの名無しさん :2005/07/15(金) 21:14:37
ま、やりたきゃ自分でバッファリングI/O実装してみるのもいいんじゃないの?
BSDのfunopen()やfgetln()のような機能はstdioには無いし

読み取りのみ・seek()なし・scanf()なし
程度なら屁みたいなもんだ


590 名前:デフォルトの名無しさん :2005/07/15(金) 21:20:38
>>588
わざわざ最初から天下のWindows様が用意してくださってる機能を信用せず変な意地だけ張ってバグ発生率を上げるのですか?

591 名前:デフォルトの名無しさん :2005/07/15(金) 21:22:42
>>590
ReadFile()は曲がりなりにもAPIコールだからな
一文字入力とかだと、stdioのgetc()
(無論マクロのヤツだ)に比べて格段に遅いのは免れんだろ

getc()したいときはungetc()も欲しくなるケースが多いしな


592 名前:デフォルトの名無しさん :2005/07/15(金) 21:49:38
天下のWindows様が聞いてあきれる

593 名前:デフォルトの名無しさん :2005/07/15(金) 23:27:27
あきれるに一票。API の引数の設定など、だらだら並べたのがあるかと思うと
構造体使っているのもある。設計に統一性がないみたい。みんなで好き好きに
やっているを集めたのではと疑いたくなることがある。

594 名前:デフォルトの名無しさん :2005/07/15(金) 23:35:10
CreateFontとCreateFontIndirectみたいに選べるのもある。

595 名前:デフォルトの名無しさん :2005/07/15(金) 23:36:39
>>593
ヒント:互換性

596 名前:デフォルトの名無しさん :2005/07/15(金) 23:52:34
>>593
その通りだと思ってたけど。
AdvancedWindowsに書いてあった気が。_beginthreadのあたりかな。

597 名前:デフォルトの名無しさん :2005/07/15(金) 23:58:31
好き勝手っつーか、APIが出来た時期によって流行が違う感じがする

598 名前:デフォルトの名無しさん :2005/07/16(土) 02:32:04
そりゃ実装時期によってCPUパワーもメモリ量も、プログラミングのトレンドも違う。
STDCALL、COM、.netの差とか考えれば、引数の数なんて些細。

599 名前:デフォルトの名無しさん :2005/07/16(土) 05:46:11
プログラミングのトレンドも違う
プログラミングのトレンドも違う
プログラミングのトレンドも違う
プログラミングのトレンドも違う
プログラミングのトレンドも違う
プログラミングのトレンドも違う


トレンドなんぞに左右されるようじゃな・・・

600 名前:デフォルトの名無しさん :2005/07/16(土) 05:47:11
アドレス0x400000あたりを空ける方法ってあるんでしょうか?
ブログラムのリンク時にベースアドレスを別の場所に指定してもスタックやらシステムヒープやらで埋められてしまうんですが・・・

601 名前:デフォルトの名無しさん :2005/07/16(土) 06:42:52 ?##
>>599
むしろトレンドを左右している気が。

602 名前:デフォルトの名無しさん :2005/07/16(土) 06:55:40
>>593
確かにWinAPIの関数はあまり統一性がない。
shlwapi.dllはバグも多いみたいだし。
でもそれはそれでM$社員の個性が出てていいじゃないか。

603 名前:デフォルトの名無しさん :2005/07/16(土) 07:05:49
そんなとこに社員が個性出してるような企業製品なんて価値0

604 名前:デフォルトの名無しさん :2005/07/16(土) 07:19:46
>>599
トレンドに左右されない硬直化したシステムなんざ使い物にならんよ。

いろいろあって今となっては当たり前の技術になったオブジェクト指向はおろか、
モジュール化手法や関数ですら、計算機技術の当初から存在したものじゃあないし、
技術的必然性だけで生き残ってるわけでもない。

Cだって最初から標準的言語だったわけじゃない。
今じゃマイナー言語でしかないPascalが標準言語になると信じられていた時代すらある。
(int PASCAL WinMain()とか若い人は知らないか)

第一、Win32APIですら成功したトレンドの1種にすぎない。
最近OS/2のサポート打ち切りが決まったらしいけど、
あるいはWindowsNTがその立場にあった可能性だってある。

近年はOSのシステムコールレベルでオブジェクト指向をサポートする方向に向かってる。
MSのCOMやWinFX(.net Framework)しかり、Mac OSのX Codeしかり。
(歴史を眺めれば、NeXTやBeOSなんてのもある)

要するに、トレンドは重要だってこと。良くも悪くもね。

605 名前:デフォルトの名無しさん :2005/07/16(土) 07:23:30
WinAPIはほとんどstdcallだが中にはcdeclを使ってるものもあるのか?

606 名前:デフォルトの名無しさん :2005/07/16(土) 07:30:09
>>605
wsprintfとか可変個引数をとるものはcdecl。

607 名前:デフォルトの名無しさん :2005/07/16(土) 07:30:48
そもそもなんで呼び出し規約違うのが混在してんの?
UNIXみたいにさっぱりできんのか

608 名前:269 :2005/07/16(土) 07:44:07
>>285
どうもありがとうございます。
CREATE_SUSPENDで実行を再開するのにはResumeThread()でできました。
次に、任意の場所で止めたくなりました。そこでDEBUG_PROCESSというオプションを使ってみたらCREATE_SUSPENDEDと同じように止まっているみたいです。
しかしこれはResumeThread()で再開できないみたいです。そして再開できたとしてもSuspendThread()では好きな場所で停止することはできません。
自由に止めたり動かしたりするにはどうしたらよいのでしょうか・・・


609 名前:デフォルトの名無しさん :2005/07/16(土) 07:50:54
>>607
stdcallが速いからなのか・・・
x86の特権移行なんかはスタックも切り替わるから、機械語レベルでstdcallになってしまっている。

610 名前:デフォルトの名無しさん :2005/07/16(土) 07:50:57
>>607
C標準ライブラリは当然Cの規約に従う必要があるけど、
WinAPIは別にCだけから呼び出すわけじゃないし。

UNIXはシステム記述するためだけにCを作ったくらいだから、
そのへんの統一はしやすかっただろうけどね。

611 名前:デフォルトの名無しさん :2005/07/16(土) 07:54:10
C標準ライブラリだって別にCの規約に従う必要は別にないし、
C/C++の規格だって呼び出し規約については何も書いていない。

612 名前:デフォルトの名無しさん :2005/07/16(土) 07:56:05
wsrpintf()やlstrlen()なんかはまんまCをモデルにしてるのに・・・

613 名前:デフォルトの名無しさん :2005/07/16(土) 07:58:37
>>604
うっは、すごいデムパ

614 名前:277 :2005/07/16(土) 07:58:51
試したところ、ポート61hを叩いて使えるみたいなのですが、TSSを調査してI/O仮想化を調べたら、どういうタイミングでかはわからないけど、61hがマスクされたりされなかったりしているみたいです。
それにWindowsでじかにポートを叩くのは行儀が悪いと思うので・・・
正しい方法を教えて下さい。


615 名前:デフォルトの名無しさん :2005/07/16(土) 08:08:15
質問です
waveInOpenでコールバックスレッドを指定したとき、
スレッド内ではどのようにしてメッセージ(MM_WIM_DATA等)を受け取ればいいのでしょうか?

616 名前:デフォルトの名無しさん :2005/07/16(土) 09:10:29
普通にGetMessageでできますた orz
スレ汚しすまそ

617 名前:デフォルトの名無しさん :2005/07/16(土) 09:17:49
TSSを調査してって、TV局を調査すんのかと思った広島県民

618 名前:デフォルトの名無しさん :2005/07/16(土) 12:41:52
MFCでDoModalってありますよね。
それをWin32APIで実現したいのですが、
ただ、”ダイアログ”ではなくて、”ウィンドウ”で実現したいのです。

よき方法はありますでしょうか?
おそらく、表示されてるウィンドウ以外の親ウィンドウ領域のクリックを、その対象となるウィンドウが表示している間はイベント(クリック)を受け付けないようにすればいいと思うのですが。

619 名前:デフォルトの名無しさん :2005/07/16(土) 12:58:39
>>614
Beep()じゃ不満?
そこまで低レベルな方法でビープスピーカーを鳴らしたいの?

620 名前:デフォルトの名無しさん :2005/07/16(土) 13:01:57
>>618
Advanced WindowsにDialogBoxParamはEnableWindow(親, FALSE);を実行すると書いてあったような気がする。

621 名前:デフォルトの名無しさん :2005/07/16(土) 13:14:39
解凍・圧縮ソフトは、その実行中にプログレスバーで処理状況を表示しますが、
そのプログレスバーがあるダイアログには必ず「キャンセル」ボタンが表示されているソフトが多いと思います。

解凍・圧縮機能の機能処理中に「キャンセル」ボタンのClickを受け付けるというのは、プログラミングの側面でどのように記述すればいいのでしょうか?

処理アルゴリズム(ループ)の中に、イベントを拾うAPIを入れるのでしょうか?

622 名前:デフォルトの名無しさん :2005/07/16(土) 13:18:31
>>621
つスレッド

623 名前:デフォルトの名無しさん :2005/07/16(土) 13:31:04
>>621
Yes
プログレスバー更新のタイミングもいるでしょ。

624 名前:デフォルトの名無しさん :2005/07/16(土) 14:01:19
Modalという考えはダイアログにしかないのだが・・・

625 名前:デフォルトの名無しさん :2005/07/16(土) 14:31:19
パケットキャプチャツールとかはどうやってパケットを取得してるのでしょう?
ネットワークインターフェイスにたいしてトリガー設けるAPIがあるのですか?

626 名前:デフォルトの名無しさん :2005/07/16(土) 14:49:10
たいていはそういうことをするための、どこぞで公開されているライブラリを使用している
ツール自身が取ってきてることはほとんど無い

627 名前:デフォルトの名無しさん :2005/07/16(土) 16:02:18
>>625
ドライバ

628 名前:デフォルトの名無しさん :2005/07/16(土) 17:29:22
>>603
その個性の価値ではなく、製品価値が0ですか
なんでWinのスレにいんの?

629 名前:デフォルトの名無しさん :2005/07/16(土) 17:38:03
夏だから勘弁してやれ。

630 名前:625 :2005/07/16(土) 19:17:31
ドライバ?もちょっと詳しく。
Cマガのバックナンバに特集のってるなあ。本屋いくか。

631 名前:デフォルトの名無しさん :2005/07/16(土) 19:20:07
ちったぁ足りない頭使いやがれ
あとAPI関係ねぇ

632 名前:デフォルトの名無しさん :2005/07/16(土) 19:25:10
Win○cap

一文字伏せてみました。


633 名前:デフォルトの名無しさん :2005/07/16(土) 19:57:03
Winぴーcap

ちゃんと音で伏せろよ。


634 名前:デフォルトの名無しさん :2005/07/16(土) 20:27:32
Winぴぃcap

音で伏せるならこうだろ

635 名前:デフォルトの名無しさん :2005/07/16(土) 20:43:36
>>633-634
おまいら、厨にもやさしいな。


636 名前:デフォルトの名無しさん :2005/07/16(土) 21:27:58
ソケットにRAWモードなかった?

637 名前:デフォルトの名無しさん :2005/07/16(土) 21:34:43
それはライブラリでしょ。得意そうに.。わからんやつは黙っとけば?

638 名前:デフォルトの名無しさん :2005/07/16(土) 22:28:38
お前がなww

639 名前:デフォルトの名無しさん :2005/07/16(土) 22:29:50
お前もなwwwうぇw

640 名前:デフォルトの名無しさん :2005/07/16(土) 22:36:38
急速にスレの質が低下してまいりました(ry

641 名前:デフォルトの名無しさん :2005/07/16(土) 22:48:44
すまん素人がいっちょまえの口きいてるからついカッとなった。

642 名前:デフォルトの名無しさん :2005/07/16(土) 22:52:10
つか今日はあちこちのスレで夏の香りが急に強まってるな

643 名前:デフォルトの名無しさん :2005/07/16(土) 22:55:40
同類にしか分からない臭いってのがあるんだねw

644 名前:デフォルトの名無しさん :2005/07/16(土) 23:12:38
スレッドがサスペンド状態か否かを調べるときってGetExitCodeThread(hThread , &dwParam);で出来るんですか?
その値はなんなんですか?


645 名前:デフォルトの名無しさん :2005/07/16(土) 23:20:04
できない

646 名前:644 :2005/07/16(土) 23:22:10
スレッドがサスペンド状態か否かってどうやって調べるんですか?



647 名前:デフォルトの名無しさん :2005/07/16(土) 23:31:06
ResumeThreadを呼び出してみて再開したらサスペンド状態だった
とかいう無理やりな判定方法をどっかで見たな

648 名前:デフォルトの名無しさん :2005/07/16(土) 23:34:00
SuspendThread()の返り値が1以上だったら、サスペンド中。すぐに
ResumeThread()すれば元に戻る。
というか、ふつうスレッドをサスペンドなんてさせない。



649 名前:644 :2005/07/16(土) 23:36:54
ありがとう

650 名前:デフォルトの名無しさん :2005/07/17(日) 01:27:36
複数のCD-ROMドライブがついているマシンで、
一番初めのCD-ROMドライブではないドライブにCDを入れたところ、
ゲームの音がなりませんでした。

Win9xでは「音楽CDを再生する規定のCD-ROMドライブ」を設定することで
どのドライブに入れても音を鳴らすことができるのですが、
Win2K(NT系?)にはこの設定項目がありません。

ドライブレターを変更するのが面倒なので、パッチを当てようと思うのですが、
「音楽CDを再生する規定のCD-ROMドライブ」の設定が影響するAPIが何か知りませんか?

651 名前:デフォルトの名無しさん :2005/07/17(日) 01:45:14
>>650
mciGetDeviceId("cdaudio") とか、mciSendCommand(..., MCI_OPEN,
...) とか mciSendString() とか。



652 名前:デフォルトの名無しさん :2005/07/17(日) 01:53:26
設定項目が無くなっただけでレジストリ直は有効だと言う話

653 名前:デフォルトの名無しさん :2005/07/17(日) 01:53:35
>>650
ディスクアドミニストレータでドライブレター変更するのそんなに面倒か?

654 名前:デフォルトの名無しさん :2005/07/17(日) 01:55:17
>>651
最初、mciSendStringかと思ったんですけど、
Dependency Walkerで調べたところ無かったんですよ。

WINMM.DLLを調べてみると使用しているmci〜系APIは一つもなかったんですけど、
良く調べてみると、MSVFW32.DLLにMCIWndCreateがあって
これでもCD鳴らせるようですね。多分これでしょう。

DirectSoundも使っているようなんですけど、
「音楽CDを再生する規定のCD-ROMドライブ」が関係するのはMCIだけで、
DirectSoundでは関係ないですよね?

あとあやしげな、WINMM.DLLのmmio〜系API。
これでは設定が関係ないどころかCDを再生できませんよね?
CDを再生するためのAPIはこれだけなんだろうか?

とりあえず、MCIWndCreateを弄くってみます。

655 名前:デフォルトの名無しさん :2005/07/17(日) 01:55:46
\HKLM\SYSTEM\CurrentControlSet\Control\MediaResources\mci\cdaudio\Default Drive
の予感。


656 名前:デフォルトの名無しさん :2005/07/17(日) 01:56:15
>>652
レジストリわかりますか?

>>653
はい。面倒です。

657 名前:デフォルトの名無しさん :2005/07/17(日) 02:06:03
>>655
そのキーないです。
データ型と値(どのドライブがどの値かも)わかりませんか?

一応、ここみてDWORD値かと思ってやったんですけど鳴らない。
http://forum.alcohol-soft.com/index.php?showtopic=15687

658 名前:デフォルトの名無しさん :2005/07/17(日) 11:54:55
'INITCOMMONCONTROLSEX' : 定義されていない識別子です。と出ますが、
何がたりないのでしょうか?

659 名前:デフォルトの名無しさん :2005/07/17(日) 11:55:56


660 名前:デフォルトの名無しさん :2005/07/17(日) 12:14:56
>>658
SEXまで読んだ

661 名前:デフォルトの名無しさん :2005/07/17(日) 12:49:11
>>658
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrfInitCommonControlsEx157.asp

662 名前:デフォルトの名無しさん :2005/07/17(日) 21:55:07
当方初心者ですが質問です。(C++相談室 part41より誘導されました)
ファイルの一覧を取得したくて下記のfindfirstを使ったのですが引数の*filespecって絶対パスでなければ使用不可能なんでしょうか。
MSDNには「ターゲット ファイルの指定 (ワイルドカードも使えます)」なんて書いてあるんですが、
ためしに相対パスを使用したらEINVAL(Invalid argument)が返ってきちゃいました。
みなさんは相対パスで指定したいときってどうされていますか?
そもそも相対パスなんか使わずに、まず絶対パスを取得して、その後findfirstを使用するのが一般的なんでしょうか。
ご教授ください。


long _findfirst( char *filespec、struct _finddata_t *fileinfo );

663 名前:デフォルトの名無しさん :2005/07/17(日) 21:58:00
Win32APIならFindFirstFileだろ

664 名前:デフォルトの名無しさん :2005/07/17(日) 22:01:18
>>662
カレントディレクトリからの相対パスでOKなず。キミがどんなコードを
書いたのかを開示すべき。



665 名前:デフォルトの名無しさん :2005/07/17(日) 23:30:20
>>664
役立たずのコードを見たがるなんて、おまえ病気だよ。

666 名前:デフォルトの名無しさん :2005/07/18(月) 04:52:29
ディレクトリの \ をエスケープしわすれたんじゃないの?

667 名前:デフォルトの名無しさん :2005/07/18(月) 16:40:44
申し訳ありませんが、1つ質問させてください。

今、簡単なアドベンチャーを作っています。
PeekMessage関数を使って、メッセージがないときにはMainLoop関数を呼ぶようにしています。
しかし、これを実行すると、休むことなくMainLoopを繰り返すためか、
CPU使用率が100%になってしまいます。

そこで試しに、MainLoop関数の中にSleep(1)を入れてみると、
CPU使用率はかなり減少しました。

しかし、Sleep関数はPCをフリーズさせているのと同じだと聞いたことがあります。
MainLoop関数の中にSleepを入れてよいのでしょうか?
また、その他にいい方法があればお教えください。

668 名前:デフォルトの名無しさん :2005/07/18(月) 16:43:08
Win32APIというかWindowsのコントロールの質問なんだけど、
EditBoxのカレントのカーソル位置を知る方法ってありますか?

MFCを使ってないんでWM_GETTEXTやらと同じ方法で取得するんだと思うのだけど。

669 名前:デフォルトの名無しさん :2005/07/18(月) 16:58:27
>>667
それでもいいしタイマーとかスレッドとかゲ板とか
>Sleep関数はPCをフリーズ
むしろ逆

670 名前:デフォルトの名無しさん :2005/07/18(月) 17:00:29
>>667
読んでみた?
ttp://msdn.microsoft.com/library/en-us/dllproc/base/sleep.asp

671 名前:デフォルトの名無しさん :2005/07/18(月) 17:06:59
>それでもいいし
あほ?

672 名前:デフォルトの名無しさん :2005/07/18(月) 17:16:00
>>667
ビジーループ氏ね。

673 名前:デフォルトの名無しさん :2005/07/18(月) 17:23:06
Sleepは一応ある意味フリーズだろ。
メインスレッドでそれを使うのはナンセンスかと。
素直に他スレッド使え。

674 名前:デフォルトの名無しさん :2005/07/18(月) 17:25:58
長年の論争にけりを付けるため
誰かWindowsゲームで使える、完璧なフレームワーク書いてくれよ

675 名前:デフォルトの名無しさん :2005/07/18(月) 17:32:31
ゲームなら全画面表示でやれよ

676 名前:デフォルトの名無しさん :2005/07/18(月) 17:42:20
>>667
そういう用途ならSleep(0);で十分。

677 名前:デフォルトの名無しさん :2005/07/18(月) 17:49:33
>>675
何の話?

678 名前:デフォルトの名無しさん :2005/07/18(月) 18:09:36
>>668
EM_GETSET

>>677
他アプリ使えなきゃゲーム側で独占しても問題無いってことだろ
つーかそもそもPCゲーはそうやるもんだ

679 名前:デフォルトの名無しさん :2005/07/18(月) 18:14:56
久々に大物のヴァカ登場か

680 名前:デフォルトの名無しさん :2005/07/18(月) 18:19:07
>>678
あ、そういうことか

俺も全画面のみのゲームは好きじゃないが
DirectXでのフラグの旧名称が、「全画面」ではなく、「排他」な以上、そういう方向なんだろうな

681 名前:667 :2005/07/18(月) 18:28:33
皆さん、ありがとうございます。
とても参考になりました。

682 名前:デフォルトの名無しさん :2005/07/18(月) 19:06:56
>>679
自虐乙

>>680
排他って言った方が理解しやすいしな

683 名前:デフォルトの名無しさん :2005/07/18(月) 20:19:36
マルチタスクOSたるWindowsの存在価値を否定する概念だよな、デバイスの排他利用って。

684 名前:デフォルトの名無しさん :2005/07/18(月) 20:23:28
キーボードだって排他的に利用してるじゃん。

685 名前:デフォルトの名無しさん :2005/07/18(月) 20:30:36
>>684
は?
キーボードは排他利用されていない。
本当に排他利用しているなら全角/半角キー入力による全角変換ウィンドウが出ない。

686 名前:デフォルトの名無しさん :2005/07/18(月) 20:42:12
1tくらいはありそうだな > 大物

687 名前:デフォルトの名無しさん :2005/07/18(月) 20:47:32
素人は回答を控えてください

688 名前:デフォルトの名無しさん :2005/07/18(月) 20:48:03
その大物ってのはなんだ?
>>676か?

689 名前:デフォルトの名無しさん :2005/07/18(月) 20:52:38
なつかしいエロゲ板ネタだナ

690 名前:デフォルトの名無しさん :2005/07/18(月) 20:56:44
>>683
ゲーム中にマルチタスクも無いもんだ

691 名前:デフォルトの名無しさん :2005/07/18(月) 20:58:22
ゲーム作ってるやつらってのはこんなににもアフォばかりなのか…

692 名前:デフォルトの名無しさん :2005/07/18(月) 21:07:23
このループは以前葱板で見た気がする‥‥

693 名前:デフォルトの名無しさん :2005/07/18(月) 21:20:57
自分の考えに合わないものは全てアフォ扱い
さすが自称スーパープログラマはスバラシイですね

694 名前:デフォルトの名無しさん :2005/07/18(月) 21:24:31
そんな言い返ししかできないとはかわいそうなニート君でつね(プゲラ

695 名前:デフォルトの名無しさん :2005/07/18(月) 21:33:27
ものの考え方が明らかに変だな。
日本人じゃないかも知れないなあ。

696 名前:デフォルトの名無しさん :2005/07/18(月) 21:39:52
>>693-695
ここ逝け。
http://pc8.2ch.net/test/read.cgi/tech/1115830336/l50

697 名前:デフォルトの名無しさん :2005/07/18(月) 21:45:14
HSPの話なんてして無いじゃん。
アフォ?

698 名前:デフォルトの名無しさん :2005/07/18(月) 21:54:30
タイトルはHSPスレだが実際は基地外の雑談スレ

699 名前:デフォルトの名無しさん :2005/07/18(月) 22:00:42
>>690
オンライン状態でゲームをしている際に、
別プロセスのファイアウォールが通信許可を求めるダイアログを出す場合もある。
排他所有を当然と考える発想は、世間では通じない。

700 名前:デフォルトの名無しさん :2005/07/18(月) 22:15:47
>>689
これ?
http://pie.bbspink.com/test/read.cgi/erog/1055673723/l50

701 名前:デフォルトの名無しさん :2005/07/18(月) 22:22:49
>>699
FFなんて激しく排他ですよw

702 名前:デフォルトの名無しさん :2005/07/18(月) 22:28:05
>>700
報告だけじゃなくて、以前は議論っぽいことをやってた
Sleep(0)以外の方法はダメだと主張する御仁が暴れてた
実はWaitFor系のAPIを知らなかっただけらしい

703 名前:デフォルトの名無しさん :2005/07/18(月) 22:44:04
>>685
排他「的」って書いたんだが…
「A」って打ったときに2つのアプリに入力されることはないでしょ、て。


704 名前:デフォルトの名無しさん :2005/07/18(月) 22:48:47
>>703
フォーカス持ちのアプリとキーロガー

705 名前:デフォルトの名無しさん :2005/07/18(月) 22:56:39
>>703
・・・君なぁ。
出力デバイスであるスクリーンの排他の話をしてたのに、
入力デバイスに排他性があることを主張して自己正当化するのは苦しいだろ?

そもそも、複数のアプリに入力が通知されるように作ることは可能。
正規のAPIでキーボードフックを使えばいい。
任意のアプリの入力を別アプリで取得できる以上、排他ではない。
ホットキーも存在するでしょ。

706 名前:デフォルトの名無しさん :2005/07/18(月) 23:00:27
ちょっとお尋ねしたいのですが
CreateFileで既存のファイルを開く時、
開く作業自体はファイルサイズに影響されないんでしょうか?
ファイルサイズが大きいと時間かかるとか・・・

707 名前:デフォルトの名無しさん :2005/07/18(月) 23:13:10
ファイルサイズが大きいと時間がかかるのは当たり前じゃないの?
ファイルサイズが大きいと小さいのと比べて同じ量をバッファする時間がかかるってこと?

708 名前:デフォルトの名無しさん :2005/07/18(月) 23:17:29
ただ開くだけでも?

709 名前:デフォルトの名無しさん :2005/07/18(月) 23:29:59
計ってみろ。おれは同じな気がする。

710 名前:707 :2005/07/18(月) 23:54:50
CreateFileか・・・Readじゃないのね・・・
俺も同じな気がする。

711 名前:デフォルトの名無しさん :2005/07/18(月) 23:59:29
デバイスによる気がする。

712 名前:デフォルトの名無しさん :2005/07/19(火) 00:08:53
ファイル開くだけで読まないならディレクトリエントリ読んでるだけだろ

713 名前:デフォルトの名無しさん :2005/07/19(火) 00:10:47
ファイルサイズよりもデバイスの種類に影響されそう。

714 名前:デフォルトの名無しさん :2005/07/19(火) 00:13:45
そんな当たり前のこと言われても

715 名前:デフォルトの名無しさん :2005/07/19(火) 00:23:44
NTFSならMFTも読みそうだけどやっぱりサイズは関係ないと思う

716 名前:706 :2005/07/19(火) 00:33:00
ここの連中は本当に無能ですね。
〜気がする
〜だろう
〜されそう
〜と思う
アホさ加減に涙が出そうです。
マトモな返答をオネガイします。

717 名前:デフォルトの名無しさん :2005/07/19(火) 00:34:34
バレバレの騙り荒らし乙

718 名前:デフォルトの名無しさん :2005/07/19(火) 00:36:13
本人ではなさそうだな。>>716
つーか、簡単に確認できることを人に聞くなと・・・

719 名前:デフォルトの名無しさん :2005/07/19(火) 01:11:56
日本語版MSDNでapi関数の検索ってどうやってやるの?

720 名前:デフォルトの名無しさん :2005/07/19(火) 01:14:27
つ[Google]

721 名前:719 :2005/07/19(火) 01:17:00
おおほんとだありがとう。基本的なことですれ汚しごめんでした。

722 名前:デフォルトの名無しさん :2005/07/19(火) 01:42:50
つーかMSDNの検索機能使うよりぐぐったほうが早いというのがなんとも…

723 名前:デフォルトの名無しさん :2005/07/19(火) 01:59:21
error C2262: 壊せません。
ってエラーが出ます。
MSDN入れてないんでGoogleで探したんですが
情報みつけられません。
探し方OR回答おしえてくらさい。

724 名前:デフォルトの名無しさん :2005/07/19(火) 02:20:19
それは本当にAPIの問題なのだな?

725 名前:デフォルトの名無しさん :2005/07/19(火) 02:23:51
VC++のランタイムライブラリのエラーに見えるな

726 名前:デフォルトの名無しさん :2005/07/19(火) 02:26:21
適切なデストラクタが定義されましたが、アクセス可能でないため、オブジェクトをインスタンス化できません。

だって

727 名前:デフォルトの名無しさん :2005/07/19(火) 03:44:11
SYSTEMとHIDDENの設定されたファイルを削除したいのですが
DeleteFileで失敗、GetLastErrorで2(ファイルが見つからない)になります。
SetFileAttributesでFILE_ATTRIBUTE_NORMALも失敗します。
手順等判りましたら教えてください

728 名前:デフォルトの名無しさん :2005/07/19(火) 03:49:14
属性は関係ない
おおかた \ を二重にするのを忘れてるとかそんなとこだろ

729 名前:デフォルトの名無しさん :2005/07/19(火) 09:51:02
>>578-580
亀レスだが GetClassLongPtr で取れるだろ。
ウィンドウハンドルはグローバルで有効、インスタンスハンドルはプロセスローカル。
GetClassInfoEx では無理と書いたのはそういうこと。

他の人も書いてるがインスタンスハンドルはメモリにマップされた EXE や DLL の識別子で
具体的な値はマップされたメモリ番地(WinCE なんかじゃ違うらしい)で、API の内部では
EXE や DLL のヘッダを辿ってリソースや TLS 初期化子にアクセスしたりする。

メモリ空間はプロセス毎に分かれてるってのは聞いたことないかい?
メモリ空間が分かれてるってことはインスタンスハンドルもそのプロセス内でのみ有効に
なってしまうってこと。すなわちインスタンスハンドルだけでは「どのプロセスの」っていう
情報が抜けてるから別プロセスのウィンドウクラスを取得することが無理。


730 名前:デフォルトの名無しさん :2005/07/19(火) 10:14:35
補足すると WNDCLASS(EX) で hInstance を指定するのは EXE や DLL から情報をとるため
ではなく、インスタンスとウィンドウクラスを関連付けるため。
関連付けがなされるから GetClassInfoEx みたいな API が使えたり、プロシージャを含む
インスタンスを解放するとウィンドウが破棄される。


731 名前:デフォルトの名無しさん :2005/07/19(火) 10:26:33
☆沖川君の憂鬱について☆
http://yasushikondo.no-ip.info/prog/all/non-job/okikawa/index.html
☆沖川君の憂鬱について☆感想文掲示板
http://yasushikondo.no-ip.info/prog/all/non-job/okikawa_bbs/aska.cgi


732 名前:デフォルトの名無しさん :2005/07/19(火) 10:36:23
ログオンユーザが、ローカルユーザかドメインユーザかを判断するAPIってありますか?

ログオンしたユーザがadministratorsグループだったら処理を行わないようにしたいのですが、
netuser/netgroup/netlocalgroup と GetUserName の組み合わせだと、ローカルユーザとドメ
インユーザが同一名の場合うまく判断できません。

判断するAPI、もしくは上手な判断方法なのありましたら教えてください。

733 名前:デフォルトの名無しさん :2005/07/19(火) 11:44:17
>>729-730
部外者だがとてもためになった。ありがとう(´ー`)

734 名前:デフォルトの名無しさん :2005/07/19(火) 17:43:10
732
OpenProcessToken();
GetTokenInformation();
LookupAccountSid():

735 名前:デフォルトの名無しさん :2005/07/20(水) 01:12:39
かなり初歩的なことかと思うのですがご教授下さい
新たに作ったプロジェクトに過去に作ったソースをコピペしたのですが
DefWindowProcが呼ばれていないのか、ウィンドウの移動や×印を押しての終了ができません。
ソース以外の部分に問題があったりすることもあるんでしょうか?

プロシージャの最後で
return DefWindowProc(hWnd,msg,wParam,lParam);
と書くと移動や最小化等ができず
DefWindowProc(hWnd,msg,wParam,lParam);
return 0;
と書くとできます
以前に作ったプロジェクトはreturn DefWindowProc(hWnd,msg,wParam,lParam);で正しく動作していて
ソースは全く同じなのですが…

736 名前:デフォルトの名無しさん :2005/07/20(水) 06:48:11
ソースいじって変わる現象なら、ソースに問題があるんだろ

前に動いていたというのも疑わしいと考えて、見直した方がいいんじゃないか?

737 名前:デフォルトの名無しさん :2005/07/20(水) 09:18:43
俺はスタックオーバーフローしてるんだと予想。
前はデバッグ版で今回はリリース版だとか。
後、些細なことでスタックの alignment 変わったりするからね。

配列のサイズ2倍にするとかポインタ経由で書き込みしてたら本当に書き込みできるサイズのものかチェック汁。

738 名前:732 :2005/07/20(水) 09:33:14
>734 レスありがとうございます。
OpenProcessToken でアクセストークン取得して
GetTokenInformation でグループ情報取得して
LookupAccountSid でSIDからユーザがドメインかローカルかを判断する
という流れですね。ありがとうございます、コレでやってみます。

739 名前:デフォルトの名無しさん :2005/07/20(水) 10:15:05
お初ですが、よろしくお願いします。
ウインドウに描画された内容をビットマップ化し扱うプログラムを作ろうとしています。
具体的には、HWNDからHBITMAPにもってこようとしてるのですが、知識が乏しくうまく行ってません。
よろしくお願いします。


740 名前:デフォルトの名無しさん :2005/07/20(水) 11:14:22
>>739
MSDN読んで知識を付けよう。
MSのインシデントを使って質問すると手取り足取り教えてくれる。

741 名前:デフォルトの名無しさん :2005/07/20(水) 11:14:59
>>739
ここで説明できるほど簡単ではない。
http://www.sm.rim.or.jp/~shishido/wincap.html

742 名前:デフォルトの名無しさん :2005/07/20(水) 12:21:16
>>739
ttp://forums.belution.com/ja/vc/000/315/83.shtml
マルチポストうざ

743 名前:デフォルトの名無しさん :2005/07/20(水) 13:44:41
SIDでドメインユーザかどうかなんてわかるの?
SIDからドメインとってプログラムが走ってるPCのドメインと比較するの?
でもそれはドメインかローカルを区別したことにはならんよね。

744 名前:デフォルトの名無しさん :2005/07/20(水) 16:15:44
>>743
LookupAccountSid()にドメイン名が入ってくるかどうかで判断できるんじゃね

745 名前:デフォルトの名無しさん :2005/07/20(水) 17:20:21
>>744
テストプログラム作ってローカルログインしたユーザで実行したらドメイン名にコンピュータ名が返ってきたよ。
>>734はプログラムをドメインコントローラで実行するという前提なのかな?

NTの機能でAdminグループに実行権を付与するのが楽な気がするのだが。

746 名前:デフォルトの名無しさん :2005/07/20(水) 17:34:39
ReferencedDomainNameに入ってくるのが
 ドメイン → ドメイン名
 ローカル → ドメイン名にコンピュータ名
なら、コンピュータ名取っておいて比較すれば
>>745の前提は関係なく切り分けられるのでは?

747 名前:デフォルトの名無しさん :2005/07/20(水) 18:15:54
CPUの負荷を%で取得するにはどうすればいいですか?

748 名前:デフォルトの名無しさん :2005/07/20(水) 19:06:58
Win32APIでPainは出来ないですか?
疑似しか無理ですかね?


749 名前:デフォルトの名無しさん :2005/07/20(水) 19:26:09
>>746
「ドメイン名にコンピュータ名」とは"ドメイン名\コンピュータ名"
ってこと?
単にコンピュータ名です。ローカルログインしてるんだかだからあたりまえだけど。

>GetTokenInformation でグループ情報取得して
>LookupAccountSid でSIDからユーザがドメインかローカルかを判断する

属してるグループ列挙してドメインコントローラのアドミンズグループに属してるか調べるってことかいな?

750 名前:デフォルトの名無しさん :2005/07/20(水) 19:26:43
APIで痛みを出すのは難しいから疑似にとどめておけ。


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