[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 14:14 / Filesize : 234 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

Win32API質問箱 Build53



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

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

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

477 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:10:57 ]
ぶふぉぁあ?

478 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:18:39 ]
>>477
次のバージョンで追加されるメソッドです
たぶん

479 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:20:29 ]
そうなのか、ダイレクトエッキスには日本語のメソッドがあるんだなたぶん

480 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:53:17 ]
COMの話だろ

481 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:31:16 ]
昔は、Delphiから CreateOleObject('CLSID_DirectInput') とか出来たけど DirectX8から出来なくなった


482 名前:445 [2007/05/28(月) 15:23:03 ]
ではアーキテクチャについては放置し、C++の方が楽みたいなのでそちらも覚えながら、
C++でDirectX使えることを目標にします

483 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:27:18 ]
DirectXならDirectXだけの世界だから大丈夫 Win32もとなると大変だけどね。

なお、言語の複雑さは C++ >>> Delphi/C#/VB > C だから覚悟はしておいてね

484 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:46:39 ]
C#って結構難しいよ

485 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:15:54 ]
>>483
>言語の複雑さは C++ >>> Delphi/C#/VB > C
C++の全てを理解しようとすればそうかもしれんが、DirectX/MFC等を使うのに必要最低限の知識でいいなら、
Cを(本当に)知ってる人なら3日もあればOKでしょう。




486 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:21:02 ]
言語論争ウゼェ

487 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:33:10 ]
>>445君へ

まずは、君が言うとこのDirectXの大海に向かって漕ぎ出せばいいんじゃね?
悩んだら、CやSDKの掟みたいなものをクレクレで聞くんじゃなく、
自分なりの解答を得たうえでをここの荒くれどもに問い合わせればいいんじゃない?
(そこそこ罵声はあるけどビビらないで)

んで、気が付きゃ、君も荒くれどもの一員

488 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:37:47 ]
>>486 素のAPIに触ろうなんて貴重な人材を自分の陣営に入れたくて必死なんだろ。 許してやれよ

489 名前:デフォルトの名無しさん [2007/05/28(月) 19:16:09 ]
ウィンドウの中にタブコントロールを作成し、それにアイテムを
1つだけ挿入するプログラムを書いたのですがうまくいきません。

以下のコードはメインウィンドウのウィンドウプロシージャが
WM_CREATEを受け取ったときに実行されるOnCreate関数です。

これを実行すると、ウィンドウの中に 250×150のサイズの立体的な
ダイアログ色の長方形が表示されますが、その長方形にタブは付いていません。
また、タブコントロールに挿入されているアイテムの数を表示するメッセージ
ボックスは "n=0"と表示します。なぜでしょうか?

1. throwは実行されない ⇒ タブコントロールの作成は成功している。
2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。

490 名前:デフォルトの名無しさん [2007/05/28(月) 19:17:26 ]
void OnCreate(HWND hParent)
{
InitCommonControls();
HWND hTab = CreateWindow(WC_TABCONTROL,
"",
WS_CHILD | WS_VISIBLE,
0, 0, 250, 150,
hParent, (HMENU)123,
(HINSTANCE)GetWindowLong(hParent, GWL_HINSTANCE), 0);
if (!hTab) throw;
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "hello";
if (TabCtrl_SetItem(hTab, 0, &item) == -1)
MessageBox(0, "挿入失敗", "", MB_OK);

// 挿入されたかどうかチェック
int n = TabCtrl_GetItemCount(hTab);
char buf[1024];
wsprintf(buf, "n=%d", n);
MessageBox(0, buf, "", MB_OK);
}

491 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:23:24 ]
エディットコントロールにWS_VSCROLLでついてくるスクロールバーについてですが、
このスクロールバーが一番下までスクロールされているかされていないかを判断するには
SetScrollInfo()とGetScrollInfo()を使わなければいけないのでしょうか?
なんかSetScrollInfo()で設定しても、元からあるスクロールバーのままで何も変わらず
いまいち使い方がよくわからなくて困ってます。これらを使わずに
一番下までスクロールされているかそうでないかを判断する方法はないでしょうか?

492 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:26:43 ]
あります

493 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:43:45 ]
で?

494 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:48:07 ]
bool 型は便利だな

495 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 20:33:48 ]
>>492
>>491の後半部分しか答えてないよ。



496 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 20:42:39 ]
全部の質問に答えたとは誰も言っていない。

497 名前:491 mailto:sage [2007/05/28(月) 21:29:42 ]
どのように判断すればいいのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:38:57 ]
::GetScrollPos

499 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:46:11 ]
>>489-490
> (中略)
> 2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。
> (中略)
> if (TabCtrl_SetItem(hTab, 0, &item) == -1)
> MessageBox(0, "挿入失敗", "", MB_OK);

挿入のときはTabCtrl_InertItem(or TCM_INSERTITEM)。

あと、そこのSetItemは失敗してる。
にもかかわず"挿入失敗"のダイアログが出ないのは「== -1」にしているから。
ヘルプでSetItemの戻り値確認してみ。(InsertItemとの違いもな)


500 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:12:36 ]
教えてください。
SetClipboardViewerで画像かどうかを識別するには何を使えばいいのでしょうか?

501 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:29:50 ]
>>500
WM_DRAWCLIPBOARDでEnumClipboardFormats

502 名前:500 mailto:sage [2007/05/28(月) 23:35:32 ]
>>501
ありがとうございます。やってみます。

503 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:02:42 ]
自作アプリの起動時処理として、とある起動済みの(自作でない)アプリケーションのウィンドウハンドルを取得したいのですが
ウィンドウキャプションがしょっちゅう変わる上に
ウィンドウクラス名もATL:00xxxxxxといった名前でこれまたWindowsを再起動するたびに変わります

なので FindWindow では手が出ません。
どうやって取得したらいいでしょう?


現在は、起動時に「対象アプリケーションをクリックしてください」と表示して
SetCapture と WindowFromPoint の組み合わせでなんとか取得してますが自動化したいのです。

504 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:10:16 ]
そのアプリの特徴を研究する。

505 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:23:09 ]
子ウィンドウを列挙してそのパターンから判別ればよかろ。



506 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:31:55 ]
プロセス列挙してモジュール名で判別なんてのも

507 名前:503 mailto:sage [2007/05/29(火) 00:59:45 ]
>>504-506
506さんの方法でやってみます。
ありがとうございました。

508 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 02:03:14 ]
>>503
FindWindowを使えばいいよ

509 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 05:31:25 ]
>>503
アプリケーションの名前が判ってるなら、
GetWindowThreadProcessIdで指定の窓のpidを取得、
pidからOpenProcessでプロセスハンドル、
プロセスハンドルからEnumProcessModulesでモジュールハンドル、
GetModuleBaseNameでアプリケーション名を取得できる。
GetModuleFileNameExでフルパス名も取得できる。
以上を見つかるまでEnumWindowsで繰り返す。

EnumProcessesから辿る場合はどうすんのかな。


510 名前:452 mailto:sage [2007/05/29(火) 05:52:02 ]
お願いします。
>>452

511 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:01:19 ]
>>510
セキュリティソフトに蹴られたりしてね?
最近のセキュリティソフトはマルウェア対策でその手のアクセスを蹴る場合がある

512 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:12:48 ]
あ、分かった
>>510
WTSEnumerateProcessesでプロセスのSIDが直接手に入る
OpenProcessTokenは必要ない

513 名前:452 mailto:sage [2007/05/29(火) 06:37:47 ]
ありがとうございます。
SID取得できたんで解決しそうです。

514 名前:489 [2007/05/29(火) 06:39:32 ]
>>499
ありがとうございます。
TabCtrl_InsertItemに変えるとうまくいきました。

515 名前:452 mailto:sage [2007/05/29(火) 07:06:24 ]
NETWORK SERVICE、LOCAL SERVICE共に
無事LookupAccountSidで取得できました。



516 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:11:47 ]
報告乙

517 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:20:17 ]
なんか夜明けと共に明るい声が響いてくる

518 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:42:12 ]
EnumWindows/EnumChildWindowsで見て特徴的な何かを探すかないんじゃないの

519 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:20:52 ]
>>509
それをソースコードにするとどのようになりますか?

520 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:42:03 ]
コンパイルすればプログラムになるだろ。

521 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 11:31:32 ]
とにかく、ウィンドウタイトルもウィンドウクラスも変わるものに対して、
何を持って特定するのだろうか。EXEファイル名だって変えられるしな。

522 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:19:32 ]
ファイル名が分かればファイルのチェックサムを算出できる。

523 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:31:16 ]
>>503
なんか、ネトゲのチートツールかなにかを作ろうとしてるように見えるwww

524 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:56:08 ]
ATL製ネトゲなんてあるのか・・・?

525 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 14:26:51 ]
ふとした疑問なんだけど
Win32ファイバって一体どういう用途で使うと真価を発揮できるんだろ?



526 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:06:03 ]
アセンブラが使えない言語でコルーチンを実装したい場合だろうな >>525
C++/Delphi はインラインアセンブラが使えるから自前でコールチンの実装が出来るから不要。
C#.NET VB.NET あたりの為に用意されたものだろう。

コルーチンは、get/put同士を接続するパイプとか
クライアント型で書かれたものをサーバ型に変換するといった場合に使う

527 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:07:04 ]
フィボナッチ数列を求める

528 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:32:41 ]
アニョハセヨー(SJIS)を
%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC
に変換するのってなんか手っ取り早いAPIあったら教えてください。
最終的には↓にしたいです。
www.google.co.jp/search?source=ig&hl=ja&q=%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

529 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:46:06 ]
MultiByteToWideChar と WideCharToMultiByte

530 名前:529 mailto:sage [2007/05/29(火) 15:50:08 ]
具体的には、MultiByteToWideChar でSJISからunicodeにし、
WideCharToMultiByte で unicodeから UTF-8にする。
最後に、そのバイト列をsprintf とかで文字列にすればよかろう。

531 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:40:47 ]
#define VOID void とか #define CONST const は、どういう意味があるんですか?

532 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:44:23 ]
>>531
#define マクロで置き換えてるだけ。
データ型が大文字(DWORD, UINT)なんで、
大文字で揃えたかったんだけじゃね?

533 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:48:28 ]
>>525
使い方によっては、デコード/エンコード、画像処理なんかでも

534 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:56:16 ]
>>531
VOIDとかは違うが、
boolとかconstとかのキーワードはもともとのC言語には無いから、C++でもCでもtう

535 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:59:10 ]
const は C でもあるぜ。
まあ、全て大文字の奴を使えば、どれもどの環境でも安心! という形にしたかったんだろう。



536 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 18:28:45 ]
>>525
Unixからの移植に使えるとAdvanced Windowsには書いてあったような気がする

537 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:13:37 ]
>>535
最近のANSI Cにはconstがあるが、これは比較的後になって追加されたもの。
もともと、というか少なくともK&Rにはconstはなかった。

538 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:18:44 ]
K&R まで遡るのはアレだけど、
昔の ANSI C にすら無かったのか・・・。

539 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:23:12 ]
少なくとも89年のANSI Cではあったな。

540 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:43:17 ]
Windowsの開発が始まった頃には間違いなくあった。

541 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:10:54 ]
>Windows 1.0が登場したのは1985年11月18日

542 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:26:47 ]
>>538
gccじゃないUNIX用のコンパイラはものすごく古い仕様のままだったりするから
Win32の場合はconstが使えない可能性なんて考慮する必要すらないな

543 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:00:31 ]
const char *とchar const *は違うそうです。
ということはconst char const *もあり?
それぞれどう違うのか説明おねg

544 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:03:52 ]
const char * と char const * は同じだよ。
違うのは char * const 。

545 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:14:17 ]
WinAPI関係ない
C++スレとかいきなされ あるいは本屋いって入門書でも立ち読みしとけ



546 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:22:54 ]
>>545
この手のは意外と書籍じゃわかりやすく解説されていない気がする。

547 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:25:26 ]
>>546
どっちにしろスレ違い。

548 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:29:45 ]
CONSTとconstに関連して,コーディングスタイルについて質問です。
Windowsプログラミングで自分で関数やクラスをつくるときに,
(1)BOOL, UINT, CONSTなどのWin32用にtypedefされたものを使う
(2)bool, unsigned int, constなどのC++予約語を使う
どっちが一般的なのでしょうか?

549 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:32:28 ]
C++のboolとBOOLは違うんだぜ

550 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:37:31 ]
どう違うんだぜ?

551 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:37:51 ]
>>549
そもそもC++にはBOOLなんて型はない

552 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:39:42 ]
>>550
普通にWindows.hをインクルードしていれば、BOOLはintにtypedefされる

553 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:46:55 ]
>>548
SDK,APIの結果を保証するなら、BOOL。
論理で判断するならbool。
という風に使い分ける。

単にintといっても不確定要素をはらんでる。

554 名前:デフォルトの名無しさん [2007/05/29(火) 23:38:13 ]
おいら,BOOL のくせに 3 種類 ( >0, ==0, <0 ) の値を返してきて
それらをきちんと判別しないといけない API って
GetMessage() しか知らないんだけど,他にもあるんだっけ?

555 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 23:53:25 ]
だってBOOTはtypedef int BOOL;だし‥‥
bool型とは違うのだよ。



556 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:10:56 ]
BOOL/boolはほかが言っているとおりなんで、残りのやつについて俺の場合
CONSTは使わず、常にconst
UINTはunsignedより文字数少ないから場合によって使う

557 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:37:32 ]
>>555
BOOT?
>>552

558 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:40:54 ]
>>557
BOOTSを語れゴラァ part2
pc11.2ch.net/test/read.cgi/tech/1139266461/

559 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:44:31 ]
>>558
ちっ、先に張られたか。

560 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:42:33 ]
つーかBOOLもBOOTSもどーでもいいからお前らWin32APIの質問しろよ

561 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:49:46 ]
>>554
あれヒドいよなw
なら戻り値の型 BOOL にすんなと。

562 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:50:05 ]
>>560
BOOLはWin32APIの話だろうが。

563 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 03:20:10 ]
>>562
BOOLはwindef.hで定義されている単なるtypedefであり、APIではありません。

564 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:24:21 ]
>>563
型もAPIのうちですよ。


565 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:31:43 ]
Vistaで新規に追加されたAPIのリストとかってどこかにありますか?
あれば教えていただきたいです



566 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:27:23 ]
>>565
msdn2.microsoft.com/en-us/library/aa383687.aspx

567 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:53:39 ]
>>566
うお、こんな体系化されたページあったのか
ありがとうございます

568 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:30:24 ]
XPで追加されたAPI一度も使ったことないどころか一つも知らんかった・・・orz

569 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:03:53 ]
記述漏れがあるけど参考程度にはなるな

570 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 14:51:46 ]
>>554
WM_CTRCOLOR**の戻り値とか、そもそもDialogProcとか
まあx64ではBOOLが32bitのままだもんでDialogProcの戻り値はINT_PTRに変わったけどな

571 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 15:50:15 ]
GetMessageもWin32化するときに戻り値の型をintへ変更すればよかったのに

572 名前:デフォルトの名無しさん [2007/05/30(水) 16:23:46 ]
質問です。

あるAPLから、フルスクリーンAPLのデバイスコンテキストを
取得したいのですが、どのようにしたら実装できますでしょうか?

573 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:39:17 ]
GetDC(NULL)

574 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:46:21 ]
APL(エーピーエル)は、コンピューターのプログラミング言語の一種で、
1957年のケネス・アイバーソンによる創案に基づいた独特の表記法を用いた、
対話型インタープリター言語である。とくに配列処理に優れる。
「APL」とは、『Aプログラミング言語』(A Programming Language)の略であるが、
言語の特性から時に『配列処理言語』(Array Processing Language)と言い換えられる。

575 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:55:20 ]
これって、アルファベットの A を意味してるのか、
それとも冠詞の a を意味してるのか、
どっちなんだろ?
和訳は前者を採用してるみたいだけど、
訳の都合かもしれないし。



576 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 17:01:20 ]
>>575
double meaningじゃないのかな。
と、適当なことを言ってみる。

577 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:00:53 ]
ごめん素で分からんのだが、APLって何






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

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

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