Win32API質問箱 Build34
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/07/30(土) 20:30:09やさしいお兄さんたちが答えてくれるかも。
∧_∧
( ´∀`) < 0x22
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
-前スレ
Build33:http://pc8.2ch.net/test/read.cgi/tech/1120153520/
0002デフォルトの名無しさん
2005/07/30(土) 20:30:44Build32:http://pc8.2ch.net/test/read.cgi/tech/1117271829/
Build31:http://pc8.2ch.net/test/read.cgi/tech/1114762194/
Build30:ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
Build29:ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
Build28:ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
Build27:ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
Build15:ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
0003デフォルトの名無しさん
2005/07/30(土) 20:31:29Build13:ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん
2005/07/30(土) 20:32:09http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
- WindowsR Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/
■書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
0005デフォルトの名無しさん
2005/07/30(土) 20:48:40乙
>>6-999
Advanced Windows の隅々まで穴が悪魔で嫁
0006デフォルトの名無しさん
2005/07/30(土) 20:48:560007デフォルトの名無しさん
2005/07/31(日) 03:59:31作成するディレクトリ名はユーザーに指定させ、すでにある場合は作成しません。
そのためCreateDirectoryを呼ぶ前にそのディレクトリがあるか調べたいです。
_statのようなANSI-CのものではなくCreateDirectoryと同じくWin32のAPIがよいです。
なにかよいものはありますか?
ちなみにFindFirstFileは面倒なのでいやです。一発で判定できるとうれしいです。
あと、もうひとつ。
ある文字列がパスとして有効かどうか判定するAPIはありますか?
たとえば、使ってはいけない文字が含まれていればFALSEが返るなど。
よろしくお願いします。
0008デフォルトの名無しさん
2005/07/31(日) 04:06:43GetFileAttributes
0009デフォルトの名無しさん
2005/07/31(日) 04:45:22直接的な答えは PathIsDirectory とか PathFileExists か。
でも、MakeSureDirectoryPathExists 使えばいいんじゃない?
後半は知らん。
0010デフォルトの名無しさん
2005/07/31(日) 07:55:48サンキューです。
0011デフォルトの名無しさん
2005/07/31(日) 08:53:190012デフォルトの名無しさん
2005/07/31(日) 09:12:420013デフォルトの名無しさん
2005/07/31(日) 12:28:32http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
次からテンプレに入れといてほしいな。
0014デフォルトの名無しさん
2005/07/31(日) 12:55:072chは●の売り上げによって設備をレンタルしているので、
●を買って見てください
ということにしておいたほうがいいと思う。
にくちゃんねるは好きだけど、知っている人だけが使う、というのでいいと思う。
0015デフォルトの名無しさん
2005/07/31(日) 15:16:07part19が見られないわけだが。
0016デフォルトの名無しさん
2005/07/31(日) 15:54:56それ考えると47氏すげーな。
0017デフォルトの名無しさん
2005/07/31(日) 16:03:32タイーホ
0018デフォルトの名無しさん
2005/07/31(日) 16:04:320019デフォルトの名無しさん
2005/07/31(日) 16:14:15オーナードローか。。
リストビュー、オーナードローでその機能実現してるサンプルあるかな??
勉強してみたいんだけど。
0020デフォルトの名無しさん
2005/07/31(日) 17:24:19おまえ、検索ぐらいしてみたのか?
0021デフォルトの名無しさん
2005/07/31(日) 17:38:38進歩じゃなくて進捗な。
0022デフォルトの名無しさん
2005/07/31(日) 18:14:50リストビュー単体、オーナードロー単体はよくあるけど、漏れが探してみた感じでは
リストビューで進捗グラフ表示しているのはVB以外はなかった。
VC、sdkでは見つからないなぁ・・。
0023デフォルトの名無しさん
2005/07/31(日) 18:19:590024デフォルトの名無しさん
2005/07/31(日) 18:21:34別に両方同時にやってるサンプルは必要ないべ?
0025デフォルトの名無しさん
2005/07/31(日) 18:47:05とりあえず、リストビューオーナードローで作ってみる。
情報トンクス。詰まったときは相談のってくらさい。
0026デフォルトの名無しさん
2005/07/31(日) 18:53:08http://long2.fc2web.com/
0027デフォルトの名無しさん
2005/07/31(日) 18:58:13セマフォの使い方が間違っていたり、etc・・・
0028デフォルトの名無しさん
2005/07/31(日) 20:39:45入出力するときだけ flock かけるようなことを UNIX でやっているのですが、
同じことを Win32 でやろうとして、
CreateFile で COM? を共有で開こうとしても上手くいきません。
Win 的にはどういうやり方をすると良いでしょうか。
0029デフォルトの名無しさん
2005/07/31(日) 20:55:07CreateFile()のパラメータは?
適当に設定しておけば開けると思うのだけど。
#ダメだったらゴメン。
0030デフォルトの名無しさん
2005/07/31(日) 20:55:51急にマスクが掛からなくなりました。
BitBlt(hdc , 188 , 238 , 25 , 25 ,
hMem5 , 0 , 50 , SRCAND);
BitBlt(hdc , 188 , 238 , 25 , 25 ,
hMem6 , 0 , 0 , SRCINVERT);
なぜでしょうか?
分かりません。おながいします。
0031デフォルトの名無しさん
2005/07/31(日) 20:58:22マスクが死んでるんじゃないの?
それだけじゃ判断できん
0032デフォルトの名無しさん
2005/07/31(日) 21:07:32CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
FILE_SHARE_* を取ると開けるのですが・・
0033891
2005/07/31(日) 21:14:19強制終了が起こる原因が分かりましたのでご報告いたします。
まず、プログラムがクラッシュしていた原因は、
APIフック部ではなく、LogWrite関数、ログ記録部でした。
そして、ここでfwriteによって書き込みを行っているのですが、
このfwriteを連続して2回以上コールすると、クラッシュしてしまうようなのです。
なので、書き出すデータを一つの変数へまとめ、一度のfwriteで書き込みを行うよう修正しました。
以上です。
サポートしていただいた方々ありがとうございました。
また何かありましたら質問させていただきますのでその節はよろしくおねがいいたします。
0034デフォルトの名無しさん
2005/07/31(日) 21:17:04レス�dクス。
「マスクが死ぬ」とはどういう事ですか?
詳細きぼん
0035デフォルトの名無しさん
2005/07/31(日) 21:21:00カーソルが設定範囲に移動するものの、その後は自由に範囲外へ移動できてしまいます。
範囲外へのカーソル移動を阻害するにはどうすればいいのでしょうかorz
ClipCursorはウィンドウ生成時(VCLのTFormコンストラクタ内)にてGetWindowRectで取ったRECT構造体を渡しています。
OSはWidnows2000です。
0036デフォルトの名無しさん
2005/07/31(日) 21:33:36やりたいことは、最大解像度よりも大きな解像度を選択し仮想スクリーン
になっているときに、画面に中央部分を表示させるようにしたいんです。
とりあえず下記の方法で半ば強引にさせてます。
x = GetSystemMetrics( SM_CXSCREEN );
y = GetSystemMetrics( SM_CYSCREEN );
for( i=0; i<(y/2); i+=8 ){
SetCursorPos( i, i );
SetCursorPos( x-i, y-i );
}
003730
2005/07/31(日) 21:42:32事故解決しますた。
普通画像とマスク画像が逆だった。
0038デフォルトの名無しさん
2005/07/31(日) 22:14:53>>35
スパイウェアでも作って強制的にOKを押させたいんですか?
0039デフォルトの名無しさん
2005/07/31(日) 22:19:37使用用途を問うのはスレ違い
0040デフォルトの名無しさん
2005/07/31(日) 22:29:42ms-help://MS.MSDNQTR.2003FEB.1041/devio/base/communications_resource_handles.htm
>The fdwShareMode parameter must be zero, opening the resource for exclusive access.
なので無理です。
004135
2005/07/31(日) 23:20:07ゲームでウィンドウ外にカーソルが飛んで他のアプリに誤爆するのを防ぐためです。
マウス主体の操作の場合、これが結構ストレス貯まるので‥‥
0042デフォルトの名無しさん
2005/07/31(日) 23:22:51全画面表示にすればいいだけじゃないのか?
0043デフォルトの名無しさん
2005/07/31(日) 23:23:47本来のカーソルそのものは消して自前描画するのはどうかね?
マウスの移動メッセージのみを拾って。
0044デフォルトの名無しさん
2005/07/31(日) 23:36:27SetWindowsHookEx()を使い、WM_MOUSEMOVE拾って移動制限かけるのは?
004535
2005/07/31(日) 23:41:39ウィンドウ前提のミニゲームなのでフルスクリーンは
>>43
自前描画してもカーソルが移動してクリックされれば他のアプリやデスクトップにマウスメッセージが
>>44
とりあえずそっちの方向でごまかしてみます
しかしなんでClipCursorが期待通りの動きをしないやらorz
0046デフォルトの名無しさん
2005/08/01(月) 00:04:07とりあえずメッセージループの中などで毎度ClipCursorすれば・・ちょっと気持ち悪いけどね。
0047デフォルトの名無しさん
2005/08/01(月) 00:09:18>ClipCursorはウィンドウ生成時(VCLのTFormコンストラクタ内)にてGetWindowRectで取ったRECT構造体を渡しています。
ちゃんとスクリーン座標で渡してるか?
きちんとMSDNなり読んでからケチつけろよ。
004829
2005/08/01(月) 00:09:28ふむ、MS-DOS以来の使用そのままか。
>>28
つーことで、素直に毎回open/closeかな。どっちみちデバイス制御周りは互換性ないから
戦略が違っても何とかなるでしょ?
0049デフォルトの名無しさん
2005/08/01(月) 00:15:23コンストラクタ内とかかいてあるんで、VCLはよく知らんけどウィンドウができる前に設定したりしてるんじゃね-の?
VC6(MFC)では以下のコードでちゃんと動いた。
View::OnLButtonDblClick()
{
if(bClick){
::ClipCursor(NULL);
bClick = FALSE;
}else{
RECT rc;
GetWindowRect(&rc);
::ClipCursor(&rc);
bClick=TRUE;
}
}
0050デフォルトの名無しさん
2005/08/01(月) 00:25:34リストボックスみたいな物を作りたいんですけど、
これってリストビューというやつが適してますか?
それともリストボックスで簡単にできますか?
0051デフォルトの名無しさん
2005/08/01(月) 01:31:18それはスレ違いジャマイカ?
0052デフォルトの名無しさん
2005/08/01(月) 08:29:46そんなもんも自分で選べないお前にはsprintf
0053デフォルトの名無しさん
2005/08/01(月) 09:32:46TFromのコンストラクタではまだウインドウ生成されてないぞ。
OnCreateでやれ。
0054デフォルトの名無しさん
2005/08/01(月) 11:45:14やるならApplication.OnActivateか。
0055デフォルトの名無しさん
2005/08/01(月) 17:09:52と同等のことをさくっと行うのにはどうしたら良いですか?
デバマネ開いて右クリックして…はちょっとめんどくさいので…
0056デフォルトの名無しさん
2005/08/01(月) 17:24:360057デフォルトの名無しさん
2005/08/01(月) 17:28:06SETUPAPI.DLL
CM_Locate_DevNode
CM_Reenumerate_DevNode
0058デフォルトの名無しさん
2005/08/01(月) 17:33:41どうすればいいのでしょうか?
0059デフォルトの名無しさん
2005/08/01(月) 17:42:120060デフォルトの名無しさん
2005/08/02(火) 02:13:54GetWindowDCとか試したんですが、前にあるウィンドウがかぶります。
ウィンドウを前に出さずにキャプチャする方法か無いでしょうか?
0061デフォルトの名無しさん
2005/08/02(火) 03:07:280062デフォルトの名無しさん
2005/08/02(火) 03:30:400063デフォルトの名無しさん
2005/08/02(火) 06:13:260064デフォルトの名無しさん
2005/08/02(火) 06:22:190065デフォルトの名無しさん
2005/08/02(火) 08:32:40Windows NT/2000/XP: Included in Windows XP and Windows Server 2003.
Windows 95/98/Me: Unsupported.
Header: Declared in Winspool.h; include Windows.h.
Library: Use Winspool.lib.
[゚Д゚]<
006660
2005/08/02(火) 16:43:27---
HDC dcmem;
dcmem = CreateCompatibleDC(NULL);
SendMessage( hTargetWnd, WM_PRINT, (WPARAM), PRF_ERASEBKGND | PRF_CLIENT );
// hTargetWnd は対象のウィンドウ
---
と、したんですが取れていないっぽいです。
ビットマップを握らせてみたりしたんですけど、真っ黒(初期状態?)でした。
何か気をつけないといけない事とかありますか?
0067デフォルトの名無しさん
2005/08/02(火) 20:48:07サポートしてなければどうしようもない。
それこそ無理やりレイヤードウィンドウにでもしない限り
背面に回したままキャプチャは不可能
0068デフォルトの名無しさん
2005/08/03(水) 01:00:02コピーしたいのですが、一番早いコピー方法を
教えてほしいとです。
よろしくお願い致します。
0069デフォルトの名無しさん
2005/08/03(水) 01:49:520070デフォルトの名無しさん
2005/08/03(水) 04:46:560071デフォルトの名無しさん
2005/08/03(水) 07:51:150072デフォルトの名無しさん
2005/08/03(水) 09:15:11SHFileOperationが最速だと思ってた・・・
CopyFileなのか〜。
0073デフォルトの名無しさん
2005/08/03(水) 09:32:33独自ルーチンのほうが速いかもしれんぞ
0074デフォルトの名無しさん
2005/08/03(水) 10:00:250075デフォルトの名無しさん
2005/08/03(水) 10:24:20Windowsの右下の常駐アイコンが表示されるところ(時計とか表示されるところ)に
作成したプログラムを起動したときアイコンを表示させたいのですが
どのようにしたらいいか教えていただけないでしょうか。
MSDNで検索してもうまく見つけられませんでした。
0076デフォルトの名無しさん
2005/08/03(水) 10:30:580077デフォルトの名無しさん
2005/08/03(水) 10:32:30おまいさんが質問しなければいけないのは、
Windowsの右下の常駐アイコンが表示されるところ
(時計とか表示されるところ)
の呼び名じゃないか?
0078デフォルトの名無しさん
2005/08/03(水) 10:33:08あそこはタスクトレイと言うんだ。
そこに表示されるアイコンはトレイアイコンと言う。
ハイ、も一回検索。
007975
2005/08/03(水) 10:36:06008075
2005/08/03(水) 10:42:420081デフォルトの名無しさん
2005/08/03(水) 11:32:24なんか、この流れにワロス
008255
2005/08/03(水) 16:09:20ありがとうございます。そこら辺をググったら
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP259697
が出てきたのでこれをそのままコピペしてやってみましたが「ハードウェア変更のスキャン」とは
同じ挙動ではないようです。
SCSIデバイスのホットスワップを行うのが目的なのですがSCSIデバイスの状態を変更後このコードを走らせても
反映されません
MinGWでコンパイルしているのがまずいのでしょうか…?
0083デフォルトの名無しさん
2005/08/03(水) 16:19:30こちらでは期待通り動いている。
0084前スレ943
2005/08/03(水) 20:20:23おかげさまで解決しました。
CoInitializeSecurity()でバッチシでした。
質問
同一CPU上でアカウントAからアカウントBで動いている、COMサーバーに
接続するには?
解決方法
1 ImpersonateLoggedOnUserでスレッドのユーザ偽装。
2 CoInitializeSecurity()のdwCapabilitiesをEOAC_STATIC_CLOAKING またはEOAC_DYNAMIC_CLOAKING
3 CoCreateInstanceで偽装したユーザにつながる。
0085デフォルトの名無しさん
2005/08/03(水) 22:34:46取得したいのですが、画面上にキャレットがないときにもこの関数が成功してしまうみた
いなので困っています。
現在画面上にキャレットが表示されているかいないかを判別する方法はありますか?
0086デフォルトの名無しさん
2005/08/03(水) 23:46:55判断できないかな?
008760
2005/08/04(木) 00:00:48http://azumaya.s53.xrea.com/index.php?page=doc/win32api/layeredwindow
↑とか読んでやっているんですが、hdcsrcの握っているビットマップがそのまま対象ウィンドウにべた塗りされているようで、キャプチャまで至りません。
コード貼ると長いのでうpしました。
http://www.abenatsumi.net/up/big/source/big1464.zip
どなたか添削希望orz
0088デフォルトの名無しさん
2005/08/04(木) 00:19:13ウィンドウを4分割して使いたいのですが
4分割のやり方が書いてあるページ、書籍などありましたら教えていただけませんか?
よろしくお願いしますm(_ _)m
0089デフォルトの名無しさん
2005/08/04(木) 00:33:24自分で管理するんだよ、そういうコントロールがあるわけじゃない。
0090デフォルトの名無しさん
2005/08/04(木) 00:47:15CoCreateInstanceするスレッドを偽装するってこと?
CoCreateInstanceExってのもあるよ。
ところでなんのためにc/sでユーザ同一にしてんの?
質問ですが
OutputDebugStringした文字列見るCUIプログラムがあったと思うのですが
なんて名前でしょう?
0091デフォルトの名無しさん
2005/08/04(木) 01:14:11PlatformSDK付属のDbMonとかCUIだった気が
0092デフォルトの名無しさん
2005/08/04(木) 01:18:47MFCのCSplitterWndのソースとか??
0093デフォルトの名無しさん
2005/08/04(木) 02:30:00みつかった。ありがとう。
0094デフォルトの名無しさん
2005/08/04(木) 03:23:08>>92
ありがとうございます。
なにぶん初心者なもので、MFCのCSplitterWndは知りませんでした。
ソースを参考にしていろいろやってみたいと思います。
0095デフォルトの名無しさん
2005/08/04(木) 03:32:56http://blogs.msdn.com/oldnewthing/archive/2003/09/10/54831.aspx
海外だと"system tray"という俗称が広まってるようだが
日本の「タスクトレイ」はどこから広まったんだろうな
0096デフォルトの名無しさん
2005/08/04(木) 04:14:55具体的にどうのようにすればブロック出来るか教えて頂け
ないでしょうか?
0097デフォルトの名無しさん
2005/08/04(木) 04:15:42β1ではWinFX自体別インストールなのにWinFXのドキュメントしかないって
なめてるのか?
0098デフォルトの名無しさん
2005/08/04(木) 04:18:58過去との互換性は大事だから、
MSはできる限り動作を変えないようにがんがるはず。
まあ問題があったから動作を変えたものもあるけどね、
SetForegroundWindowとか。
0099デフォルトの名無しさん
2005/08/04(木) 04:50:35http://mikedimmick.blogspot.com/2004/07/changes-to-win32-api-in-longhorn_21.html
Win95に追加されたWin16 APIみたいに公開されずじまいで黒歴史になるんだろうか。
MicrosoftはWin32とWinFXの両方でVistaの全機能にアクセスできると
約束したはずなんだが…。
0100デフォルトの名無しさん
2005/08/04(木) 05:15:520101デフォルトの名無しさん
2005/08/04(木) 05:25:33で、どういうのが追加されたわけ?
■ このスレッドは過去ログ倉庫に格納されています