Win32API質問箱 Build34
レス数が1000を超えています。これ以上書き込みはできません。
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で、どういうのが追加されたわけ?
0102デフォルトの名無しさん
2005/08/04(木) 05:55:59GDI/USERの32ビットヒープを見るためのToolhelp APIとか。
0103デフォルトの名無しさん
2005/08/04(木) 07:17:38取得するAPIってあるでしょうか?
APIでなくても何か方法があれば知りたいのですが・・・
よろしくお願いします。
0104デフォルトの名無しさん
2005/08/04(木) 07:32:27事前に調べるのは無理だろう。
まあ、あえてやろうと思えば(意味があるかどうか知らんがw)
for(i = 0; PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); i++) ;
0105103
2005/08/04(木) 08:14:20処理が重すぎてメッセージが溜まるようなら調整するようにしようと思ったのですが、
他の方法を考えてみます(´Д⊂
010685
2005/08/04(木) 08:42:42ありがとうございます。
最終手段としては考えていますが、それだとエディタやIE内のエディットボックスなど
判断できない場合があるのし、新しいアプリにも対応できないのでできれば他の方法がいいのですが。
根本的な解決方法はないのでしょうか?
0107デフォルトの名無しさん
2005/08/04(木) 20:47:20リソースファイルに
nameID BITMAP filename
を書き加えて、
LoadBitmap(hInstance , "nameID");
みたいなかんじでwebサイトとかに載っているのですが、
うまくいきません。(BitBlt()とかで転送しても表示されない)
リソースファイルを作ったときにできたresource.hを
#inlcude "resource.h"
インクルードして
LoadBitmap(hInstance , MAKEINTRESOURCE(nameID)); とか
LoadBitmap(hInstance ,(LPCTSTR)nameID);
だったらうまくいきます。
というか、リソースファイルの記述が.Netじゃできなくて
別のエディタで書いてたりします。使い方とかも教えてほしいです。
長くてすいません。
0108デフォルトの名無しさん
2005/08/04(木) 21:45:18↓
"nameID" BITMAP filename
こうすればいいような希ガス。
0109デフォルトの名無しさん
2005/08/04(木) 23:13:45クリップボードのbitmapをファイルに保存したいです。ハンドルから直接データを
頂けるとラクなので以下のようにした(動作はしている)のですが、こういうやり方ってOKなんでしょうか?
Web上のみなさまはGetDIBitsを主に使っておられ、以下のようにしてる人は見当たらなかったもので・・・
BITMAPFILEHEADER bmfh;
/* bmfh.bfSize 以外に定型データ代入 */
::OpenClipboard(m_hWnd);
HBITMAP hBitmap = (HBITMAP)::GetClipboardData(CF_DIB); // 存在確認済み
GlobalLock(hBitmap);
const BITMAPINFOHEADER* pbmih = (BITMAPINFOHEADER*)hBitmap; // pbmih->biSizeImageの値が欲しいだけ
bmfh.bfSize = bmfh.bfOffBits + pbmih->biSizeImage;
/* (const void*)bmfh と (const void*)hBitmap をファイルに書込む、あるいは別の領域にコピー */
::GlobalUnlock(hBitmap);
::CloseClipboard();
0110デフォルトの名無しさん
2005/08/05(金) 01:31:58GetGUIThreadInfo
0111デフォルトの名無しさん
2005/08/05(金) 09:32:47実際に正常に終了している様には見えますが 自信が持てません。^^;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) {
(省略)
HWND hwnd;
hwnd = CreateWindow ("Window 1", ・・・);
(省略)
hyouji1 ((hwnd1);
return 0;
}
void hyouji1 (HWND hwnd1){
MSG msg;
(省略)
while(TRUE){
if (PeekMessage(&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_NOREMOVE)){
if (GetMessage(&msg, NULL, 0, 0) == 0) break;
TranslateMessage(&msg);DispatchMessage(&msg);
}
else
{
(省略) //左クリックが押されない限り 計算を続ける
}
}
}
LRESULT CALLBACK WndProc (HWND hwndBlack, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_LBUTTONDOWN: PostQuitMessage (0); return 0; //アプリ終了
return DefWindowProc (hwnd1, msg, wp, lp);
}
0112デフォルトの名無しさん
2005/08/05(金) 09:43:18それじゃウインドウがまったく反応せず、クリックしたら終了という、
何のためのGUIなんだかわからんプログラムになるんじゃないか?
それでいいなら、別にGUIにしなくたっていいじゃん。
GetMessageの戻り値の処理がそれだと多少まずい場合があるけど
それ以前に変だから。考え方が。
0113デフォルトの名無しさん
2005/08/05(金) 10:06:32PostQuitMessage()は普通WM_DESTROYが来たときに呼ぶ。
アプリケーションを終了させたいところではWM_CLOSEをPost/Sendする。
WM_CLOSEはウィンドウの×を押したときにも送られ、DefWindowProcへ送るとDestoyWindow()が呼ばれる。
そしてDestoyWindow()がWM_DESTROYを送る。
あとメッセージはPeekMessageしたあとGetMessageをしなくてもPeekMessageで全部受ければいいだろ。
MSG msg;
while (TRUE) {
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
if (msg.message == WM_QUIT)
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
(省略) //左クリックが押されない限り 計算を続ける
}
}
0114111
2005/08/05(金) 11:21:12ありがとうございます。
説明が足らない部分があったので補足すると、ウインドウは
hwnd = CreateWindow ("Window 1", NULL, WS_POPUP, 0, 0, 500, 300,NULL, NULL, hInstance, NULL);
という内容で、×マーク等の無いクライアント領域のみのウインドウです。
それで「クリックで終了」ということを考えました。
クリック後ウィンドウを閉じる処理をしてからWM_DESTROYを送るように変更してみます。
ホントにありがとうございました。
当たり前のように指摘されると あまりの自分の知識のなさに泣けてきます・・・・ うわ〜〜ん
でもがんばります^^
0115デフォルトの名無しさん
2005/08/05(金) 11:34:24WM_DESTORYはDestroyWindow()を呼んだ結果として起こるものであって、自分で送るものではない。
0116デフォルトの名無しさん
2005/08/05(金) 11:54:18タイトル部、ウインドウの枠も無いウインドウを作る事は可能でしょうか、
CreateWindowExのウインドウスタイルを見るかがり目的の設定が無いと思うのですが、
ほかに方法はありますでしょうか、
以上です、よろしくお願いします。
0117デフォルトの名無しさん
2005/08/05(金) 12:05:30WS_CAPTIONを使うな。
0118デフォルトの名無しさん
2005/08/05(金) 12:23:00WS_POPUPかリュージョン使えばおk
0119デフォルトの名無しさん
2005/08/05(金) 14:59:12デキィタァー!
感謝です。
>WS_POPUPかリュージョン使えばおk
WS_POPUPの指定で目的は果たせて解決出来ました。ありがとうございます。
ところで「リュージョン」っていうのは何でしょうか、出来ましたら参考に教えていただけませんでしょうか。
よろしくお願いします。
0120デフォルトの名無しさん
2005/08/05(金) 15:03:310121デフォルトの名無しさん
2005/08/05(金) 15:03:590122デフォルトの名無しさん
2005/08/05(金) 15:34:440123デフォルトの名無しさん
2005/08/05(金) 15:43:47リージョンの間違え(´・ω・`)
Windowを好きな形に切り取るといったら判りやすいかも
http://www.kumei.ne.jp/c_lang/sdk4/sdk_338.htm
この辺を参考に
ペルソナウェアとかデスクトップアクセサリとかによく使われてるもの
0124デフォルトの名無しさん
2005/08/05(金) 17:58:06おっ!
たまに挙動がおかしいですがこれなら実用性に問題はなさそうです。
ありがとうございました。
0125デフォルトの名無しさん
2005/08/05(金) 19:13:57ただし、まだ9X系列をサポートするつもりなら使えないけど。
0126デフォルトの名無しさん
2005/08/05(金) 19:16:170127デフォルトの名無しさん
2005/08/05(金) 19:43:54ツールバーを非表示にしたいのですが、
HWND h = CreateToolbarEx(..)
で作ったツールバーを非表示にしたいと思うのですが、
SendMessage(h,・・・・・
書き方が分かりません。おしえてください。
0128デフォルトの名無しさん
2005/08/05(金) 19:50:290129デフォルトの名無しさん
2005/08/05(金) 20:06:48取り合えずDefWindowProcでやってみたのですが、ActiveXのボタンかどうかの判断は出来ませんでした。
何方か、解決方法ご存じありませんでしょうか。
よろしくお願いします。
0131デフォルトの名無しさん
2005/08/05(金) 20:25:45効果があったりなかったりして困っています
透明色の値は黒とは限らず例えば ChooseColor でユーザに選択させた値などです
LWA_ALPHA と混用していて、「効果がなかった」ときも微妙に色が変わったように見えます
どなたか、お心当たりがあれば教えてください
環境は Windows2000, VC6, cygwin g++ です
SDK は最新版です
0132デフォルトの名無しさん
2005/08/06(土) 00:47:02ActiveX側でWM_MOUSEOVER
0133デフォルトの名無しさん
2005/08/06(土) 02:13:540134デフォルトの名無しさん
2005/08/06(土) 02:41:310135前スレ813
2005/08/06(土) 05:59:24>>前スレ816
Win98なのですが、音は出ないみたいです。サウンドカードからも出ません。system()はcommand.com呼び出しですよね?
system("\a")だと、そういうコマンドがないので、「コマンドまたはファイル名が違います」となりますね・・・
NT系はsystem()でcmd.exeとかが呼び出されるのですか?
>>前スレ822
すみません、Win98です。WIN32.HLPにはNT系のところにサウンドカードのことが書かれてなかったのでわかりませんでした・・・
0136デフォルトの名無しさん
2005/08/06(土) 07:39:08printf("\a") だろ
0137前スレ816
2005/08/06(土) 08:09:46Win2000 だと出る。
system("echo \a"); でどうだろか。これも Win2000 だと出る。
>>136
Winアプリだとそれじゃあ出ない。(少なくとも Win2000 では)
0138デフォルトの名無しさん
2005/08/06(土) 08:24:04さて、command.comのechoはbellを処理できただろうか。
0139デフォルトの名無しさん
2005/08/06(土) 08:43:00ハンドルを取得するにはどうすれば良いのでしょうか
0140デフォルトの名無しさん
2005/08/06(土) 08:51:160141140
2005/08/06(土) 08:53:080142デフォルトの名無しさん
2005/08/06(土) 08:55:240143デフォルトの名無しさん
2005/08/06(土) 08:58:06const long long FOO = 9223372036854775807;
const unsigned long long BAR = 0xffffffffffffffff;
VC6までならlong longはないから<windows.h>のLONGLONGとULONGLONGとかで。
0144140
2005/08/06(土) 09:06:17で、HOGE=0xffffffffに丸められてしまいます。
プロジェクトのプロパティの何かを変える必要があるのでしょうか?
私の環境はVS.Net2002です。お願いします。
0145140
2005/08/06(土) 09:12:11でも駄目でした。アカデミックパックだと出来ないのでしょうかねぇ。
0146デフォルトの名無しさん
2005/08/06(土) 09:13:42定数の書き方は limit.h を読んでみるといい
変数は __int64 型
0147デフォルトの名無しさん
2005/08/06(土) 09:14:140148デフォルトの名無しさん
2005/08/06(土) 09:18:42符号なしだから0xffffffffffffffffui64じゃないか?
0149デフォルトの名無しさん
2005/08/06(土) 09:30:55「丸められて」をどう確認した?
出力に使った手段が32bit型しかサポートしていない可能性も‥‥
(BCBのiostreamとか)
0150デフォルトの名無しさん
2005/08/06(土) 09:42:39printf("%I64d\n", HOGE);
または
printf("%I64x\n", HOGE);
0151140
2005/08/06(土) 09:55:08ビットシフトとビットオアで間に合わせました。有難うございました。
const UINT64 HOGE_U =0x12345678;
const UINT64 HOGE_L =0x87654321;
UINT64 HOGE;
HOGE=HOGE_U<<32|HOGE_L;
0152デフォルトの名無しさん
2005/08/06(土) 10:04:41出来ないって何が?
その方法で何が出来るようになったんだ?
例えば 150 の指摘があたっていたら
それでもまだ失敗するはずだぞ
0153デフォルトの名無しさん
2005/08/06(土) 10:05:170154デフォルトの名無しさん
2005/08/06(土) 10:10:05それだったら0x12345678 << 32 | 0x87654321でもできそうな気がするが。
0155デフォルトの名無しさん
2005/08/06(土) 11:33:50#include <iostream>
using namespace std ;
int main()
{
const UINT64 HOGE = 0xffffffffffffffff ;
printf("%I64u\n", HOGE) ;
printf("%I64x\n", HOGE) ;
cout << HOGE << endl ;
}
接尾辞もキャストも無しでちゃんと出るけどなぁ。
BCC5.6.4、vctk2003 で。
0156デフォルトの名無しさん
2005/08/06(土) 16:07:56ヒント:mmintrin.h
0157デフォルトの名無しさん
2005/08/06(土) 16:52:24それがどーしても嫌というのなら、LARGE_INTEGER構造体・共用体を使う。
0158デフォルトの名無しさん
2005/08/06(土) 18:22:530159デフォルトの名無しさん
2005/08/06(土) 21:06:350160デフォルトの名無しさん
2005/08/06(土) 21:08:050161デフォルトの名無しさん
2005/08/06(土) 21:11:150162デフォルトの名無しさん
2005/08/06(土) 21:14:30const wchar_t* p = L"abcあいう";
::MessageBox( NULL, p, L"", MB_OK);
printf("error:%s\n", p);
printf("error:%S\n", p);
wprintf(L"error:%s\n", p);
wprintf(L"error:%S\n", p);
を実行すると
error:a
error:abc
error:abcerror:a
と化けます。(ダイアログには出る)
コンソールに正しく出すのはどうすればよろしい?
0164デフォルトの名無しさん
2005/08/06(土) 21:51:07#include <locale.h>
setlocale(LC_ALL, "");
0165デフォルトの名無しさん
2005/08/06(土) 21:59:22ソケット使うとか、別にイベントを用意して手動でたてたりおろしたりするとか。
0166デフォルトの名無しさん
2005/08/06(土) 22:02:49普通に書き込み専用のサブスレッド立ててタイムアウト指定が一番簡単だと思うけど
0168デフォルトの名無しさん
2005/08/06(土) 22:08:000169デフォルトの名無しさん
2005/08/06(土) 22:11:03なんのエラー?
0170デフォルトの名無しさん
2005/08/06(土) 22:14:49正確には、呼び出し側でWaitFor〜でタイムアウト時間指定して待機し、帰ってこなかったら
TerminateThreadとか。
0171デフォルトの名無しさん
2005/08/06(土) 22:26:57>Windows Me/98/95: For operations on files, disks, pipes, or mailslots,
>this parameter must be NULL; a pointer to an OVERLAPPED structure causes
>the call to fail. However, the function supports overlapped I/O on serial and parallel ports.
0172デフォルトの名無しさん
2005/08/06(土) 22:38:18ちゃんと日本語ヘルプにも載ってたわ。すまん。
Windows 95/98:非同期の書き込み操作を行う場合、FILE_FLAG_OVERLAPPED フラグを指定し CreateFile 関数を呼び出して開いた通信リソース、または socket と accept どちらかの関数が返したソケットのハンドルを指定します。
メールスロット、名前付きパイプ、ディスクファイルに対する非同期書き込み操作はサポートしていません。
0173デフォルトの名無しさん
2005/08/07(日) 01:49:24どのようなAPIを使って取り出し、再生をすればいいのでしょうか。
0175139
2005/08/07(日) 08:40:410176デフォルトの名無しさん
2005/08/07(日) 08:42:07(・∀・)カエレ!!
0177139
2005/08/07(日) 08:47:26/⌒ヽ)
i三 ∪
○三 |
(/~∪
三三
三三
三三三
0179デフォルトの名無しさん
2005/08/07(日) 09:15:33うろお�hぉえだけど。
LoadLibrary
FindResource
LoadResource
LockResource
あたりでリソース読む。
再生はよくわからん。
普通にアニメーションコントロールを作りゃいいんじゃないの?
CreateWindowとかして。
0180139
2005/08/07(日) 10:35:30ありがとうございます。
スクロールバーがでるくらいリスト項目が十分にあれば
強制的にWM_VSCROLLを出させて、ハンドルを拾えました。
目的を書けばよかった。
リストボックス付随スクロールバーの外見を、
Webブラウザでスタイルを変更したときのスクロールバーの様に見せたかったんです。
0181デフォルトの名無しさん
2005/08/07(日) 14:24:46自分( 自作の.exeや.dll )で持っているリソースとまったく同じやり方でおk。
取得先が shell32.dll なだけ。
0182デフォルトの名無しさん
2005/08/07(日) 17:47:08ディレクトリーが存在するかどうかを調べようと思い、
Directory.exists("mm\\");
とかきこみましたが、
Directory定義されていない識別子
と出ます。#include <io.h>
しています。
使い方を教えてください。
0183デフォルトの名無しさん
2005/08/07(日) 17:51:54何語だそれは。
あーたそれCとC#がごっちゃになってまへん?
Win32APIならPathIsDirectoryっていう、そのまんまなAPI関数がありますわ。
#include <io.h>も不要。 むしろwindows.hのほうが必要。
0185デフォルトの名無しさん
2005/08/07(日) 18:13:02PathIsDirectoryでできました。
でも、#include <shlwapi.h>やリンカの設定も必要でした?
0186デフォルトの名無しさん
2005/08/07(日) 18:30:44それでいいんだよ。
0187デフォルトの名無しさん
2005/08/07(日) 19:04:410188173
2005/08/07(日) 22:05:53ありがとうございます。そのへん調べてみます。
>>181
アイコンはExtractIcon(だったかな?)でやったことあるんだけど、
AVIは扱ったことないもんで。
BCB6使ってるんだけど、TAnimateコンポーネントはあまり
自由なことができなさそうなので、APIを使う方法を調べておこうかと
思いまして。
0189デフォルトの名無しさん
2005/08/07(日) 22:27:58確か、こんな感じでいけるよ。
HMODULE shell32.dllのモジュールハンドル = LoadLibrary("shell32.dll");
Animate_OpenEx(アニメーションコントロールのウィンドウハンドル, shell32.dllのモジュールハンドル, MAKEINTRESOURCE(shell32.dll内のリソースID));
Animate_Play(アニメーションコントロールのウィンドウハンドル, 0, -1, -1);
0190デフォルトの名無しさん
2005/08/07(日) 23:07:59tryブロックで囲んで例外をキャッチしようとしたら例外が発生しなくなった。(正常に動く)
で、またtryブロックを外したら例外が発生する・・・なぜ???
今までこんなことなかったのに不思議だ・・・
OpenFileNameではそんな現象は見られませんでした。
そんな経験ある方いますか?
ちなみにVC++.netです。
0191デフォルトの名無しさん
2005/08/07(日) 23:13:540192190
2005/08/07(日) 23:20:02キャッチしてくれるんならいいんだけど、
例外自体が発生しなくなってcatch(...)ブロックにも入らなくなったんで
おかしいなぁ〜・・・と。
とりあえず正常に動きはするみたいだけど、原因がわからないと
イマイチ気持ち悪くて・・・
0193デフォルトの名無しさん
2005/08/07(日) 23:29:30それとも別のところで発生したかは判明してんの?
SaveFileName は内部で SetErrorMode 使ってたりするから
(外から見て)例外は発生しにくいぞ。
0194173
2005/08/08(月) 00:43:01すみません、何語の話でしょう?(^^; BCB6のTAnimateクラスに
OpenExなんてメソッドはないっす。
TAnimateクラスのソースを眺めてみたんですが、まあ最終的には
そんな感じにはなってましたけど。
ACM_OPENとかのメッセージを使うらしいことはわかってきました。
とりあえず当面はサポートされてるアニメーションで間に合わせとくかな。
0195デフォルトの名無しさん
2005/08/08(月) 00:48:27Animate_OpenEx は WIN32API 。
TAnimateのクラスからウィンドウハンドルを取得すればそのまま使えると思うけど。
ただし、TAnimate がアニメーションコントロールのラッパーじゃない場合はうまく機能しない。
0197デフォルトの名無しさん
2005/08/08(月) 04:32:41拡張スタイルにWS_EX_COMPOSITEDを指定してやると、
WM_PAINTが発生しまくるわ、WM_NOTIFY(リストビューのNM_CASTUMDRAW)が飛んできまくるわで、
リストビューは表示されないし、
WM_PAINTが飛びすぎなので、当然レスポンスは著しく下がるし、CPU使用率が100%になるしと、
まともじゃない挙動になるのですが、
誰か詳しく分かりませんか?
0199デフォルトの名無しさん
2005/08/08(月) 07:07:18例外関係はスタック食うから、それで隠れてるだけって可能性も。
020097
2005/08/08(月) 23:26:060201デフォルトの名無しさん
2005/08/09(火) 03:00:14当然OSはWindowsXPで、CS_OWNDCかCS_CLASSDCを指定しているんだろうな?
0202デフォルトの名無しさん
2005/08/09(火) 03:52:290203デフォルトの名無しさん
2005/08/09(火) 05:04:28諦めたほうがいいかと。
SetFileTimeしてみた?
0204197
2005/08/09(火) 06:14:13MSDNだと、指定してはいけないことになっています。
今試してみたら、ウインドウが表示されなくなりますね。
いろいろ試してみたけど、やはり自前でダブルバッファ処理をしたほうがましですね。
Vistaに期待しようかな。
0205デフォルトの名無しさん
2005/08/09(火) 06:32:42http://homepage3.nifty.com/k-takata/mysoft/touch.html
0206デフォルトの名無しさん
2005/08/09(火) 08:31:17これで書庫のディレクトリの日時の復元が出来そうです
0207デフォルトの名無しさん
2005/08/09(火) 20:31:42どなたか、教えてください
自分で作ったアプリケーションをノンアクティブ状態でジョイパッドを使用できる状態にしたいのですが、どうすれば
よろしいでしょうか?ダイレクトインプットを使えば簡単なのですが、どうも難しすぎて私の手には負えません。
それ以外で方法はないでしょうか?
もう一つ質問があるのですが、自分で作ったアプリケーション以外で新規に起動したアプリのウィンドウハンドルを
取得したいのですが、どうすればいいのですか?
一度に二つも質問してすみません
0208129
2005/08/09(火) 20:44:17129で次の質問したものです。
>ウインドウに表示されたActiveX(Flash.ocx)のボタンの上にマウスカーソルが来た事を判断させたいのですが、
>取り合えずDefWindowProcでやってみたのですが、ActiveXのボタンかどうかの判断は出来ませんでした。
>何方か、解決方法ご存じありませんでしょうか。
>よろしくお願いします。
>132
>ActiveX側でWM_MOUSEOVER
レスありがとうございます。
自分は、CAxWindowを使ってFlash.ocxを呼んでるんですが、
とりあえずこのウインドウに流れてるメッセージを片っ端から表示してみたんですが、
WM_MOUSEOVERを含め、それらしい(あやしそうな)メッセージはどうも来ないようなんです。
もしかして全然間違ってますか?
出来ましたら、もう少し具体的に教え頂けると助かります。
以上です、引き続きよろしくお願いします。
0209デフォルトの名無しさん
2005/08/09(火) 20:49:360211デフォルトの名無しさん
2005/08/09(火) 20:58:10NT系 2000 以後限定でも?
0212デフォルトの名無しさん
2005/08/09(火) 20:59:030213デフォルトの名無しさん
2005/08/09(火) 21:06:25さすがにGDIではあまりないけどDirectXだとゴロゴロ
0214デフォルトの名無しさん
2005/08/09(火) 21:34:41返事ありがとうございます。フックを使って具体的にどうすればいいのか
教えて頂ければうれしいです。
0215デフォルトの名無しさん
2005/08/09(火) 22:08:01やりたいことと同じことをやっている、
オープンソースのソフトのソースコードを見れ。
0216デフォルトの名無しさん
2005/08/09(火) 22:12:560217デフォルトの名無しさん
2005/08/09(火) 22:13:04そのFlash.ocxは自分で作ったActiveXコントロール?
いまいち作りが不明なんだけど。
どういう風にやったのか詳細を。
つか、スレ違いっぽいのでMFCスレのがいいかも試練。
0218デフォルトの名無しさん
2005/08/09(火) 22:16:38特定のウィンドウのみををクリップボードにコピーする方法を教えてください
0219デフォルトの名無しさん
2005/08/09(火) 22:19:13名前から考えるに自作じゃなくてMacromedia(現Adobe)のFlash Playerのコントロール
だから>>133みたいに聞いたんだが
0220デフォルトの名無しさん
2005/08/09(火) 22:23:16じゃ、ActiveX側がそのイベント発行して無いと無理だな。
0221デフォルトの名無しさん
2005/08/10(水) 02:02:28ウィンドウをクリップボードにコピーすることなど出来ない。
0223デフォルトの名無しさん
2005/08/10(水) 06:44:170224129、208
2005/08/10(水) 10:21:37レスありがとうございます。
説明不足ですいません、219さんのおっしゃる通りです。
>220
>あぁ、そうか。
>じゃ、ActiveX側がそのイベント発行して無いと無理だな。
importした時に吐き出されるFlash.tlhを見るとイベントでは、次の三つが用意されているんですが、
OnReadyStateChange、OnProgress、FSCommand
それぞれ捕まえて挙動を見てみたんですがどれもダメでした。
ん〜、無理なんですかねぇ〜。
0225デフォルトの名無しさん
2005/08/10(水) 11:54:52メッセージフックで良いと思う。
SetWindowsHookExとかその類をキーワードにして
SDK見たり検索したりしてみてごらん。
0226デフォルトの名無しさん
2005/08/10(水) 15:19:260227デフォルトの名無しさん
2005/08/10(水) 16:53:33そこでレバーコントロールの右下にスクロールバーを出して、レバーコントロール以下の
文字列をスクロールさせたいと思っているのですが、どうしてもスクロールバーが
レバーコントロールの部分まで重なってしまいます。スクロールバーを初期位置に出す
WS_OVERLAPPEDWINDOW | WS_VSCROLLではなく、
スクロールバーの初期位置を任意の座標に出すにはどうすればいいのでしょうか?
開発環境は、VC++、SDKです。よろしくお願いします。
0228デフォルトの名無しさん
2005/08/10(水) 16:55:480229デフォルトの名無しさん
2005/08/10(水) 17:01:030230デフォルトの名無しさん
2005/08/10(水) 18:55:04子ウィンドウとしてスクロールバーコントロールを配置するか、
レバーを除外した部分を子ウィンドウにして、
そっちのスクロールバーを使うか。
0231デフォルトの名無しさん
2005/08/10(水) 19:36:29返事ありがとうございます。
子ウィンドウとしてスクロールバーを作る方法でいこうと思います。
これで解決しそうです。でも、ウィンドウサイズを可変するとちらつくのが気になるところ・・。
0232デフォルトの名無しさん
2005/08/10(水) 20:12:04スクロールバーを、モードレスダイアログボックスに配置しては?
0233デフォルトの名無しさん
2005/08/10(水) 23:11:270234デフォルトの名無しさん
2005/08/10(水) 23:21:25親ウインドウの背景を再描画しないようにすれば解決する…はず。
0235デフォルトの名無しさん
2005/08/11(木) 07:55:48既にロックされているかどうかを
処理を止めずに知るにはどうすれば良いのでしょうか?
0236デフォルトの名無しさん
2005/08/11(木) 08:21:19TryEnterCriticalSection
MSDNよめばEnterCriticalSectionからリンク貼られているぞ。
0237デフォルトの名無しさん
2005/08/11(木) 08:30:00既にロックされているかどうかを、処理を止めずに、かつロックせずに知りたいのです。
0238デフォルトの名無しさん
2005/08/11(木) 08:33:33むり。
クリティカルセクションでやりたければ、
TryEnter〜で確かめて、自分がクリティカルセクションつかんだら、
すぐにLeave〜するぐらいなもの。
0239デフォルトの名無しさん
2005/08/11(木) 08:39:39Mutexの方を検討してみます。ありがとうございました。
0240デフォルトの名無しさん
2005/08/11(木) 08:47:530241デフォルトの名無しさん
2005/08/11(木) 08:48:060242デフォルトの名無しさん
2005/08/11(木) 09:51:50レバーってrebar controlのことか!
0243デフォルトの名無しさん
2005/08/11(木) 11:53:400244デフォルトの名無しさん
2005/08/11(木) 12:14:58>既にロックされているかどうかを、処理を止めずに、かつロックせずに知りたいのです。
それってあまり役に立たないAPIだと思う。
APIから戻ってきて次のコードを実行するときには
もうロックの状態が変更されてるかも知れないわけだし
0245デフォルトの名無しさん
2005/08/11(木) 12:47:22プリプロセッサによる条件文を記述しようとしているのですが、
Windows環境でのビルドだと、指定したインクルード(#include "MyWinApp.h")がされるようにしたいのです。
プリプロセッサに何をしていすればいいのでしょーか?
よろしくお願いします。
#ifdef ?
#include "MyWinApp.h"
#else
#include "MyApp.h"
#endif
0246デフォルトの名無しさん
2005/08/11(木) 12:54:15どのコンパイラか言わないのに答えられるわけがない。
というか普通そういうコンパイラ依存の特殊なのは、コンパイラ付属のヘルプに書いてあるもんだが。
0247デフォルトの名無しさん
2005/08/11(木) 13:00:22失礼しました。
開発環境はVCです。
0248デフォルトの名無しさん
2005/08/11(木) 13:13:19ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/_predir_preprocessor_directives.asp
_WIN32とか_MSC_VERあたりかな。
0249デフォルトの名無しさん
2005/08/11(木) 13:13:56ちがった、こっちな。
0250デフォルトの名無しさん
2005/08/11(木) 13:14:03マルチすなや。移動するなら断ってからに汁。
つーか、どうしてWin32APIの問題だと思ったんだ? 更にスレ違いだがね。
>>246
スレ違いなんだからぬるーしる。
0251デフォルトの名無しさん
2005/08/11(木) 13:30:00VCスレ池
0252デフォルトの名無しさん
2005/08/11(木) 17:49:48察するに、CriticalSectionで囲まれた部分が何か重い処理を必要としていて、
もしこの部分を他のスレッドが使用していたら、待つのに時間がかかるから
他のスレッドはその処理を実行するのを一時あきらめよう、っていうことかな?
bool g_bEnter = false;
void f1()
{
EnterCriticalSection(&cs);
bEnter = true;
bEnter = false;
LeaveCriticalSecion(&cs);
}
void f2()
{
EnterCriticalSection(&cs);
bEnter = true;
bEnter = false;
LeaveCriticalSecion(&cs);
}
としときゃ、bEnterを調べることによってロックされているかわかるんじゃない?
まあ多少穴はあるが、用は足りるのでは?
0253デフォルトの名無しさん
2005/08/11(木) 18:06:39スレッド分割の設計を見直したほうがいいと思う。
0254デフォルトの名無しさん
2005/08/11(木) 18:22:13WM_TIMERの時に最小限の範囲(rect)をInvalidateRectして
WM_ERASEBKGNDも使ってます。
しかし、それでもちらつきがとれません。
どうすればいいでしょうか?
0255デフォルトの名無しさん
2005/08/11(木) 18:23:50プライマリスレッドがワーカースレッドを作って何か処理させる、というモデルなんじゃないの?
ワーカースレッドがひとつ動いてる間は、新たなワーカースレッドを作って処理させるためのボタン
なりメニューなりをDisableにして禁止したい、というケースじゃないかと想像してるんだが。
これは普通に、あっていいと思うけど。
0256デフォルトの名無しさん
2005/08/11(木) 18:26:13スレ違いといいつつ書き込む馬鹿に教える事など無い
0257デフォルトの名無しさん
2005/08/11(木) 18:27:42>>254
それはゲーム屋(俺は違うが)はみんな知ってるダブルバッファリング処理をしてないからだね。
ゲームならWind32APIを直接使わずに、DirectX9.0c SDKを使う方がいいと思うよ。
0258デフォルトの名無しさん
2005/08/11(木) 18:29:430259254
2005/08/11(木) 18:53:35�dクス。ついにDirectXか
0260デフォルトの名無しさん
2005/08/11(木) 19:13:14ついにDirectXか
ついにDirectXか
ついにDirectXか
今更DirectXか、だろ
0261デフォルトの名無しさん
2005/08/11(木) 19:32:13プログラムを作成したいのですが、IPアドレスエディットコントロールで
どうしてもIPを拾えず、変更も出来ません。
何かうまい方法はないでしょうか?
0262デフォルトの名無しさん
2005/08/11(木) 19:34:12ただ、ネットワークの設定画面なんかでよくある
IPアドレス入力に特化したエディットコントロールってだけですから
0263デフォルトの名無しさん
2005/08/11(木) 19:38:38じゃぁロックの設計が良くない。
本当にロックしないといけないのは、
ワーカースレッドが触っている対象物ではなく、
ワーカースレッドが動いているかどうかを管理している部分だろう。
0264261
2005/08/11(木) 19:40:232000やXPではIP取得し変更をかけられたんですが
NTで使える命令が知りたかったのですが・・
0265263
2005/08/11(木) 19:41:01そうすりゃ、ロック待ちの時間はとても短くなるでしょ。
0266デフォルトの名無しさん
2005/08/11(木) 19:49:55自動で出現させて、そこのIPアドレスエディットコントロールを弄る、という
話なのか?
0267261
2005/08/11(木) 20:01:01NicSet.IpAddress
NicSet.IpSubnet
NicSet.DefaultIpGateway
NicSet.DNSServerSearchOrder
NTでは無理なのでしょうか?
0268デフォルトの名無しさん
2005/08/11(木) 20:16:020269デフォルトの名無しさん
2005/08/11(木) 20:23:46よーわからんが、本当にNicSetってWin32APIの一部なの?
MSDNで検索してもそれらの関数ひとつもヒットしないんだが。
0270デフォルトの名無しさん
2005/08/11(木) 20:43:350271デフォルトの名無しさん
2005/08/11(木) 20:45:16そういう API があるかどうか以前に、本質的に無理だろ?
「ロックされていない」という返却値を受け取った直後にロックされたらどうするんだよ
0272デフォルトの名無しさん
2005/08/11(木) 20:47:35NicSetはインスタンス名だろう
ググったら同じ名前で宣言しとるVBソースとかあったし
そんなとこから引っ張ってきてんじゃないか?
>>267
ち な み に API で は あ り ま せ ん
0273デフォルトの名無しさん
2005/08/11(木) 20:56:52って2000が出てきたときにMS方面から聞いた記憶がある。
0274デフォルトの名無しさん
2005/08/11(木) 21:08:440275デフォルトの名無しさん
2005/08/12(金) 07:32:31richedit.hに
#define wReserved wEffects
の一文が
0276デフォルトの名無しさん
2005/08/12(金) 10:37:43どうでもいい高速化のためのキャッシュデータに使ったりして
スワップしそうならその領域を勝手に開放して新規の確保には失敗するとか。
0277デフォルトの名無しさん
2005/08/12(金) 10:45:57キャッシュ用のメモリは、
確保する最大サイズを指定した独自のヒープから確保するようにすれば?
0278デフォルトの名無しさん
2005/08/12(金) 10:53:140279デフォルトの名無しさん
2005/08/12(金) 10:54:47そういったものはない。
0280デフォルトの名無しさん
2005/08/12(金) 10:55:34winAPIヤバイ。
まず広い。もう広いなんてもんじゃない。超広い。
広いとかっても
「東京ドーム20個ぶんくらい?」
とか、もう、そういうレベルじゃない。
何しろ無限。スゲェ!なんか単位とか無いの。何坪とか何?fとかを超越してる。無限だし超広い。
しかも膨張してるらしい。ヤバイよ、膨張だよ。
だって普通は地球とか膨張しないじゃん。だって自分の部屋の廊下がだんだん伸びてったら困るじゃん。トイレとか超遠いとか困るっしょ。
通学路が伸びて、一年のときは徒歩10分だったのに、三年のときは自転車で二時間とか泣くっしょ。
だから地球とか膨張しない。話のわかるヤツだ。
けど宇宙はヤバイ。そんなの気にしない。膨張しまくり。最も遠くから到達する光とか比較してもよくわかんないくらい遠い。ヤバすぎ。
無限っていたけど、もしかしたら有限かもしんない。でも有限って事にすると
「じゃあ、宇宙の端の外側ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超寒い。約1ケルビン。摂氏で言うと−272℃。ヤバイ。寒すぎ。バナナで釘打つ暇もなく死ぬ。怖い。
それに超何も無い。超ガラガラ。それに超のんびり。億年とか平気で出てくる。億年て。小学生でも言わねぇよ、最近。
なんつっても宇宙は馬力が凄い。無限とか平気だし。
うちらなんて無限とかたかだか積分計算で出てきただけで上手く扱えないから有限にしたり、fと置いてみたり、演算子使ったりするのに、
宇宙は全然平気。無限を無限のまま扱ってる。凄い。ヤバイ。
とにかく貴様ら、宇宙のヤバさをもっと知るべきだと思います。
そんなヤバイ宇宙に出て行ったハッブルとか超偉い。もっとがんばれ。超がんばれ。
0281デフォルトの名無しさん
2005/08/12(金) 10:57:290282デフォルトの名無しさん
2005/08/12(金) 11:19:40リッチエディットでSetOptions(ECOOP_OR,ECO_NOHIDESEL);を指定すると、
スクロールバーの表示がおかしくなるのですが、
このような不具合をご存知な人はいますか?
0283デフォルトの名無しさん
2005/08/12(金) 11:55:46キャッシュに使ってる最中にOSが勝手に解放したらどうなるのか考えたら
そんなものがあるわけないことくらい分かるだろ
0284デフォルトの名無しさん
2005/08/12(金) 12:30:490285282
2005/08/12(金) 12:55:380286デフォルトの名無しさん
2005/08/12(金) 12:59:120287デフォルトの名無しさん
2005/08/12(金) 16:46:13このように一度ロードしたDLLを開放せず何度もロードを繰り返して大丈夫でしょうか?
同じDLLでLoadLibraryを繰り返し実行してみたところ何度実行してもインスタンスハンドルが変わらなかったので、
一度メモリにロードされたものは再度ロードしようとしても実際はロードされないのだと思いますが・・・。
0288デフォルトの名無しさん
2005/08/12(金) 17:15:120289デフォルトの名無しさん
2005/08/12(金) 17:30:17point32解析するしかないのかなぁ
0290デフォルトの名無しさん
2005/08/12(金) 17:40:05�dクス。
エラー処理は手抜きせず呼んだあとはちゃんと開放するようにします。
0291デフォルトの名無しさん
2005/08/12(金) 18:17:43エクスプローラが親プロセスになってるプログラムなら取得出来るのですが…。
0292デフォルトの名無しさん
2005/08/12(金) 19:30:36既にロード済みであることがわかっている場合はGetModuleHandle()。
LoadLibrary()とFreeLibrary()は参照カウンタを使っているとAdvanced Windowsに書いてあったような気がする。
0293デフォルトの名無しさん
2005/08/12(金) 19:39:04普通に取れると思うけど。
0294デフォルトの名無しさん
2005/08/12(金) 19:46:34スクリーンセーバとか、作るとき、IMEを消したいんですが、
そんなAPI関数ありましたっけ?
それとも何か他の方法が、、、?
0295デフォルトの名無しさん
2005/08/12(金) 19:49:07ウィルスとかトロイの木馬とか作ってる香具師ばっかりなのか?
0296デフォルトの名無しさん
2005/08/12(金) 19:50:510297デフォルトの名無しさん
2005/08/12(金) 19:58:39無い。別の方法を使う。「VC++ 立川さん」でググれ。
0298294
2005/08/12(金) 20:14:30ググッた。 出た。 わかた。
ありがと。 この立川さんって人すごいね?
0299デフォルトの名無しさん
2005/08/12(金) 21:00:29ただの横スクロール
0300デフォルトの名無しさん
2005/08/12(金) 21:11:16使用用途の話はスレ違い。
だが、フックやプロセスメモリアクセスはイヤンな用途しか使い道がないような希ガス。
というよりその関数や機能自体そんな目的で作られてるようにも思える。
0301デフォルトの名無しさん
2005/08/12(金) 21:16:11アフォか
0302デフォルトの名無しさん
2005/08/12(金) 21:34:13SetWindowPos( m_hWnd , rect , SWP_NOSIZE);
って感じで実装してるんですが、rect内容が変わってる事、戻り値が0になってること、フラグの組み合わせなど
確認したんですが、どれもダメで。
何がいけないんでしょう?、ん〜わかんない。
よろしくお願いします。
0303デフォルトの名無しさん
2005/08/12(金) 21:45:04たぶん制限ユーザーなんだろう。
0304デフォルトの名無しさん
2005/08/12(金) 22:09:21フック系関数やReadProcessMemory、WriteProcessMemoryの使い道を述べよ
0305デフォルトの名無しさん
2005/08/12(金) 22:19:12ウイルス...
0306デフォルトの名無しさん
2005/08/12(金) 22:20:350307デフォルトの名無しさん
2005/08/12(金) 22:21:18MFCのソースでも見ろ
> ReadProcessMemory、WriteProcessMemory
MSDNの分類見れば自明
0308デフォルトの名無しさん
2005/08/12(金) 22:23:00デバッガ
0309デフォルトの名無しさん
2005/08/12(金) 23:39:39CBTを作っているわけでもないのに、
それらのAPIを使うのは、
行儀が悪いよね。
0310デフォルトの名無しさん
2005/08/12(金) 23:47:250311デフォルトの名無しさん
2005/08/12(金) 23:50:53ReadFileなんてAPIがあるからウイルスに(ry
0312デフォルトの名無しさん
2005/08/12(金) 23:52:570313デフォルトの名無しさん
2005/08/12(金) 23:57:44アプリケーションのファイルやレジストリのアクセスを監視したければ、
Sysinternalsのツールのようなやり方をすべきで、
フックしたりすべきじゃないんだよな。
0314デフォルトの名無しさん
2005/08/13(土) 00:01:38DeleteFileもReadFileもBitBltもウイルス以外に使い道は広い。
だがWriteProcessMemoryなんてデバッガとウイルスとクラックツールぐらいしか使い道がない。
デバッガ作れるような技術がある奴ならWriteProcessMemory相当のコードは書けると思うが。
それにデバッガ作る奴なんてそれほど多くない。
これはMSが厨房向けに容易にウイルスが作成できる環境を提供してると思われ。
0315デフォルトの名無しさん
2005/08/13(土) 00:07:55> 書けると思うが。
ReadFileがなくてもファイルを読めるのか? (メモリマップトファイルを使えば
読めるがそういう話じゃなくて)
APIってそういうものだろ
0316デフォルトの名無しさん
2005/08/13(土) 00:09:02それでMSにどういう得があるんだよ
デンパ垂れ流すのもたいがいにしろ
0317デフォルトの名無しさん
2005/08/13(土) 00:12:19WOW64のファイルシステムリダイレクションやレジストリリダイレクションが
ユーザーモードで実装されていることについてはどうお考えですか
0318デフォルトの名無しさん
2005/08/13(土) 00:34:44また、発生するメッセージを調べるにはどうしたらいいのでしょうか?
0319デフォルトの名無しさん
2005/08/13(土) 00:53:42つ [Spy++]
第4・第5とも同じメッセージが割り当てられてるから、PARAM値を見ないと判定できないんじゃなかったっけ。
0321291
2005/08/13(土) 01:22:09何故かC:\からのフルパスが取れるのは一部だけ…
0322デフォルトの名無しさん
2005/08/13(土) 01:43:240323デフォルトの名無しさん
2005/08/13(土) 02:37:19この話といったいどんな関係が?
それらはフックすることでAPIコール前に調整しているのではなく、
APIコールした後にOSのモジュール内で調整しているんですよ。
0324デフォルトの名無しさん
2005/08/13(土) 02:44:38> この話といったいどんな関係が?
「フックしたりすべきじゃない」と考える論拠によるのでお聞かせ願えますか
0325デフォルトの名無しさん
2005/08/13(土) 02:51:22どうやってる?
具体的にコードを示したほうがいいぞ。
エスパー能力を発揮すると・・・
PROCESSENTRY32構造体のszExeFileを見てたりする?
EnumProcessModulesして、
GetModuleFileNameExしたらどう?
0326デフォルトの名無しさん
2005/08/13(土) 02:54:45それじゃわからない。
もっと詳しく、この話とどう関係するのか説明してよ。
どうしてWOW64だとフックしなきゃいけないの?
0327デフォルトの名無しさん
2005/08/13(土) 03:22:14>>304
OSからしてソース非公開である以上、アプリがソース公開されているはずもなく、
ソースのない状況でもアプリをメンテナンスする必要性(あるいは需要)がある以上、
フックのような仕組みは必要悪として存在せざるをえない。
(バイナリパッチが使えないシチュエーションも存在する)
>>313
カーネルモードドライバでやるべきってのは間違い。
その程度の用途でいちいちカーネルモードにコード突っ込んでるようじゃ、
とてもじゃないが安定したシステムなんか望めない。
皆がSysintarnalsレベルの技術者ではない。
まあ、Server系ではフック類は無効になってるとかしたほうがいいとは、個人的には思うけどな。
あくまで「パソコン」としてのWindowsに必要なだけで、「サーバ」にはいらんだろうし。
0328デフォルトの名無しさん
2005/08/13(土) 04:28:15なるほど、フィルタドライバだとカーネルモードになるってことか。
バグがなくても危険きわまりないAPIフックと、
バグがなければ安定するフィルタドライバ、
どっちを選ぶかというと・・・後者でしょ。
なんだかんだ言ってるけど、やってることはクラックなんですよ。
0329デフォルトの名無しさん
2005/08/13(土) 04:57:13ダウト。ありえない仮定を持ち出すのは詭弁の第一歩だよ。
APIフックでコケるのはフックかけられる側プロセスだけで、
その程度でシステムダウンするほどNTカーネルはやわじゃない。
(9xは現代的OSじゃないのでしらん)
カーネルモードドライバはコケればほぼ確実にシステムごともっていく。
これはバグがどの程度あるにしたところで、変わらない事実。
> やってることはクラックなんですよ。
だから何。カーネルモードでやろうがどこでやろうが、クラックはクラックだが?
クラックかクラックじゃないかなんて、技術に対する解釈の相違にすぎんよ。
少なくともスレ違いだ。
0330デフォルトの名無しさん
2005/08/13(土) 05:21:380331デフォルトの名無しさん
2005/08/13(土) 05:35:080332デフォルトの名無しさん
2005/08/13(土) 05:44:59しかし、わからないことがあります。
1. ブレークポイントを利用してデバッギーを停止させたいわけですが、APIヘルプにはデバッギー側からDebugBreak()をコールする方法しか載っていません。
INT 3やDRxを利用したい場合、システムのサポートは一切ないのでしょうか・・・?
だとすると、
INT 3 -> ReadProcessMemory()/WriteProcessMemory()を使う
DRx -> SetThreadContext()/GetThreadContext()を使う
ということでいいのでしょうか?
2. 一般の(アプリケーションの)デバッガではデバッギーをロードした時にはEIPはPEヘッダのエントリポイントになっています。
しかしCreateProcess()でCREATE_SUSPENDEDを指定した場合や、DEBUG_PROCESSを指定した場合(初期ブレークポイント例外イベントまでContinue)、スレッドコンテキストを取得してもそのような位置にはなっていません。
まあ待ちループ中なので当たり前と言えば当たり前かもしれませんが・・・
デバッガはどうやって「頭出し」を行っているのでしょうか?まさかPEヘッダを解析してエントリポイントにINT 3やDRxを仕掛けているとか・・・?
ちなみにWin98です。
0333332
2005/08/13(土) 05:55:090334デフォルトの名無しさん
2005/08/13(土) 07:23:30おぃおぃ詭弁だとレッテルはって誤魔化すのはヤメれ。
APIフック
バグがあると危険
バグがなくても危険
フィルタドライバ
バグがあると危険
バグがなければ安全
ちなみにSysinternalsのFilemonはクラックじゃないぞ。
OSが備えている機能を意図した通りに使っているからね。
それに対して、他のプロセスに任意のDLLを割り込ませるのはクラックだろう。
0335デフォルトの名無しさん
2005/08/13(土) 08:03:27詭弁に反論する意味がないのは自明だと思うので、無視させてもらう。
0336デフォルトの名無しさん
2005/08/13(土) 08:10:30ぷ
フックだってグローバルにやれば、バグがあったら大惨事だ。
そんなに安全だっていうなら、APIをフックするDLLを、
レジストリの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windowsの
AppInit_DLLs
に設定してみ。
0337デフォルトの名無しさん
2005/08/13(土) 08:17:22技術の内容じゃなくて、悪意のあるのがクラックかとオモテタヨ。
このごろは説明書に載ってない使い方をするとクラックなんですか。
くわばらくわばら。
0338デフォルトの名無しさん
2005/08/13(土) 08:18:51バグがなければ安全
→事実に対して仮定を持ち出す
ちなみにSysinternalsのFilemonはクラックじゃないぞ。
フックだってグローバルにやれば、バグがあったら大惨事だ。
→ごくまれな反例をとりあげる
詭弁のガイドラインくらい読もうぜ。
まあそうでなくても、常識的なWindowsプログラマなら、お前さんの事なんか信用しないけどな。
おおっと、こう言ってしまうと
→主観で決め付ける
に該当してしまうな。悪い悪いwww
もう黙るわ。
0339デフォルトの名無しさん
2005/08/13(土) 08:25:31大抵のソフトの説明書には使用することによって発生した損害は一切負わない
とかって免責があるからどんな使い方しても問題無いんじゃない?w
ただ俺が思うのはフリーソフトなら免責ってのはわかるが
シェアなのにその免責っておかしくね?
それこそクラックしたくなる罠
0340デフォルトの名無しさん
2005/08/13(土) 08:38:46いや、悪意あるだろ。
自分の書いたプログラムのプロセス空間に、
勝手にスレッド起こされたり、
勝手にDLL読み込ませられたり、
勝手にAPIをフックされたりしたら、
嫌だろ。
だいたいあれだろ、Winnyの動作を変えたくてクラックしようとしてるんだろ。
ただでさえWinnyやってるだけで人間の屑なのに、それをクラックするなんて・・・。
0341デフォルトの名無しさん
2005/08/13(土) 08:40:22> 詭弁のガイドラインくらい読もうぜ。
笑わせてくれるな。
ガイドラインがどういうものか、わかってないだろ。
0342デフォルトの名無しさん
2005/08/13(土) 08:41:490343デフォルトの名無しさん
2005/08/13(土) 08:44:16説明ヨロ
0344デフォルトの名無しさん
2005/08/13(土) 08:47:16基本的には包丁を使用することによって発生した損害をメーカが負う必要は必ずしもないのと一緒だが
それに便乗してメーカ側の怠慢による結果までどさくさまぎれに免責しようって傾向はあるな
0345デフォルトの名無しさん
2005/08/13(土) 08:52:030346デフォルトの名無しさん
2005/08/13(土) 09:13:36俺は別に自分の作ったソフトがクラックされてもかまわんけど?
むしろそうやって変な動作をさせられたほうが普段見えないバグを発見してくれてよかったりする。
ある程度想定外のことをされてもまともに動くようにはしてるが。
Winnyは元々挙動に問題があるからそれを修正しようとしてるのであって不正な動作をさせようとしてるわけではないだろ。
ディスクの負荷が高すぎるからWriteFileなんかをフックして特殊なバッファリング機能をつけるとか。
47氏がタイーホされて開発が継続できないからバグや不具合の修正はユーザーの仕事。
それでいいじゃないか。
0347デフォルトの名無しさん
2005/08/13(土) 09:23:45それは無駄なコスト。
16連打クリックとか物理メモリ8MBとかそういう「想定外」ならともかく
フックなんぞされたときの動作まで保証する必要はないだろ。
0348デフォルトの名無しさん
2005/08/13(土) 09:30:23そりゃあ変な関数にすり替えられちゃダメだが。
フックできなくしてあるのではなくてフックされたら困るような設計はしてないということ。
0349デフォルトの名無しさん
2005/08/13(土) 09:38:430350デフォルトの名無しさん
2005/08/13(土) 09:41:28行儀良いフックに限って言うなら、
そのフックによって挙動がおかしくなる設計というのを想像できないが。
0351デフォルトの名無しさん
2005/08/13(土) 10:45:22一部の関数に、
CP〜とCrypt〜という、プレフィクスの違うものがあるのですが、
これはどちらを使えばいいのでしょうか?
なぜかCrypt〜のほうがぐぐるとヒットしやすいのですが。
MSDNだとCPのほうが分かりやすいリンクを貼られていたりもします。
どちらも説明は同じような意味のことが書いてあるのですが……。
0352デフォルトの名無しさん
2005/08/13(土) 10:52:190353351
2005/08/13(土) 10:54:03自己解決しました
MSDNもっとよく読むべきだったOrz
0354デフォルトの名無しさん
2005/08/13(土) 11:12:33フックなんていうイヤラシイことは人に聞かずに自力でヤレ!
自信過剰なフックは事故のもと。安易にフックするな。
人様のプログラムに悪さする暇があったら、自分でアプリを作れ。
0355デフォルトの名無しさん
2005/08/13(土) 11:16:480356デフォルトの名無しさん
2005/08/13(土) 11:50:41質問者の目的を邪推してくだらん話をグダグダ続けてないで、もっと有意義なスレにしましょう。↓
0357デフォルトの名無しさん
2005/08/13(土) 12:25:08なんかIATがないんですけど。
0358デフォルトの名無しさん
2005/08/13(土) 12:26:31あるよ
http://www.iat.co.jp/
0359デフォルトの名無しさん
2005/08/13(土) 12:33:07「Winnyのフックの仕方」はなんとなくスレ違いじゃね?
ついでだからマジレスするとtelockのアンパッカーを探してください。
0360デフォルトの名無しさん
2005/08/13(土) 12:35:30えっ…気になって調べてみたけど、違いが分からないっす_| ̄|○
0361デフォルトの名無しさん
2005/08/13(土) 13:02:48すでに走っているWinnyのAPIを乗っとりたいので、アンパックしたくありません。
0362デフォルトの名無しさん
2005/08/13(土) 13:06:10消えろ
0363デフォルトの名無しさん
2005/08/13(土) 13:11:24ダウソ板の人のほうが詳しかったり?
0364デフォルトの名無しさん
2005/08/13(土) 13:34:020365デフォルトの名無しさん
2005/08/13(土) 13:35:05ほんとろくでもない人間ばっかりだな。
0366デフォルトの名無しさん
2005/08/13(土) 13:40:45フックDLL注入
0367デフォルトの名無しさん
2005/08/13(土) 13:42:490368デフォルトの名無しさん
2005/08/13(土) 13:48:070369デフォルトの名無しさん
2005/08/13(土) 13:49:42「フックなんてない方が良い」などと言う人がいるんだなぁ
手軽な言語が流行るわけだ
結局リダイレクトのほうがてっとり早いんかな
0372デフォルトの名無しさん
2005/08/13(土) 14:24:19IATがないと言ってるだろがボケ
試しもしないで知ったか書くな!
>>365
フックは正当に認められた権利です。
0373デフォルトの名無しさん
2005/08/13(土) 16:19:15どうやってやってる?
Process32Firstだけじゃ、多分フルパスは取れないんで。
↑で取れたプロセスIDから取得しないとだめだと思うよ。
0374デフォルトの名無しさん
2005/08/13(土) 16:50:000375デフォルトの名無しさん
2005/08/13(土) 16:54:31NT系はファイル名しか入らなかったはず。
0376デフォルトの名無しさん
2005/08/13(土) 18:12:45もしくはフックを無効化する方法を考えろ!
・・・思いつかんorz
0378デフォルトの名無しさん
2005/08/13(土) 18:19:11ウイルスとか減りますか?
0380デフォルトの名無しさん
2005/08/13(土) 18:35:10IntelliPointが動かなくなるので首吊ります
0381デフォルトの名無しさん
2005/08/13(土) 19:01:30先にSetHook〜をフックしておいてフックを妨害するって方法しか
出てきません。
0382デフォルトの名無しさん
2005/08/13(土) 19:07:23API使わなければいんじゃね?
0383デフォルトの名無しさん
2005/08/13(土) 19:28:42おまえら頭いいな
0384デフォルトの名無しさん
2005/08/13(土) 20:14:59UPXとかtelockとかの暗号化・圧縮・クラック防止等のツールが何をやっているのか調べればわかるよ。
売り物のソフトには、フックしたりするような行儀の悪いプログラムを妨害して
フックさせないようにする代物もあるらしい。
とりあえず俺が思いつくのは
・インポートライブラリを使わない
・メモリの要所にライトウォッチを設定して勝手に書き込まれそうになったらプロセス終了しちゃう
・CreateRemoteThreadとかのAPIを先に乗っ取って封じてしまう
0385デフォルトの名無しさん
2005/08/13(土) 20:27:46http://pc8.2ch.net/test/read.cgi/tech/1122791420/
0386デフォルトの名無しさん
2005/08/13(土) 20:33:45猫でも、というところでMDIは見たのですが。
ググってもMFCの話しか見当たらないス。
0387デフォルトの名無しさん
2005/08/13(土) 20:43:01Petzold の最初のサンプルが立派に SDI だけど、
MFC で出来ていたことの何がしたいの?
0388デフォルトの名無しさん
2005/08/13(土) 20:59:000389デフォルトの名無しさん
2005/08/13(土) 21:07:43Petzold本の事ですかい?
今知りました。残念ながら無いです。
今までMFC無しで作ってたプログラムに
SDIを追加したいと思いまして。
>>388
って感じ?
0390デフォルトの名無しさん
2005/08/13(土) 21:10:29ただ RegisterClass, CreateWindow して WM_DESTROY で PostQuitMessage つーだけのプログラム
0392デフォルトの名無しさん
2005/08/13(土) 22:31:46たぶんSDIを思い切り勘違いしてるな。
0393デフォルトの名無しさん
2005/08/13(土) 22:39:420394デフォルトの名無しさん
2005/08/13(土) 22:40:550395デフォルトの名無しさん
2005/08/13(土) 22:42:07一部の特殊記号(1byte文字)のみ変換せずにそのままスルーすることはできないでしょうか?
(半角カナを全角変換してそのまま出すというAPIはあるのですが)
これらの文字をnkf32でShift-JISに変換すると、誤変換されて文字化けしまい、困っています
0396デフォルトの名無しさん
2005/08/13(土) 22:54:580397デフォルトの名無しさん
2005/08/14(日) 04:16:39話としては、何を勘違いしているのかに興味はなくもないがスレ違い。
nkfで入出力ともエンコーディングをちゃんと指定しているなら普通化けない。
0398デフォルトの名無しさん
2005/08/14(日) 07:37:330399デフォルトの名無しさん
2005/08/14(日) 09:55:57WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST
だと大きさをオーバーした項目はキーボードの↑↓を押してやらなければ見えません
CBS_DISABLENOSCROLLなどのスクロールのスタイルがあるということはスクロールバーって出ますよね?
0400デフォルトの名無しさん
2005/08/14(日) 12:02:29戻り値がNULL、GetLastErrorが5 Access is denied. ERROR_ACCESS_DENIEDを返してきます。
作成側パラメータ
::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, "Testtest");
::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
非作成側パラメータ
::OpenFileMapping(PAGE_READWRITE, false, "Testtest");
::MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0);
コード的に問題はないように思うのですが原因がさっぱり分かりません。
0401デフォルトの名無しさん
2005/08/14(日) 12:24:04第二引数はNULLじゃなくてNULL DACLを指定するとか(セキュリティ的に危なそうだけど)
0402400
2005/08/14(日) 12:59:01NULL DACL指定しても相変わらずアクセス拒否られました。
MapViewOfFileでFILE_MAP_READを指定するとマップされるのですがこれでは書き込みできないのでダメぽな状態です。
ちなみにテスト環境はWindows2000SP4、Admi権限ユーザーです。
0403デフォルトの名無しさん
2005/08/14(日) 13:12:34そこらのサンプル見てもそうなってるけど。
日本語版MSDNにはFILE_MAP_WRITEと同じって書いてるけど嘘だから
0404400
2005/08/14(日) 13:20:29||
|| バッ
∧||∧
(∩ ⌒ヽノ OpenFileMappingのDWORD dwDesiredAccessに
\ _⊃ Create〜のDWORD flProtectの値を間違えて入れてたのが原因らしい
∪ Σ
≡| ̄ ̄ ̄ ̄|
||
||
∧||∧
( ⌒ ヽ
∪ ノ 鬱出汁脳 てか似たようなAPIの似たような引数で値が違う仕様作ったMS逝ってよし
∪∪
0405デフォルトの名無しさん
2005/08/14(日) 17:53:27||
∧||∧
( ⌒ ヽ
∪ ノ
∩∪∩
(・∀・| | ウヒョー
| |
⊂⊂____ノ
彡
0406デフォルトの名無しさん
2005/08/14(日) 18:15:13終了するまで2番目のプログラムをスリープさせようと思っているのですが、
ウインドウもウインドウクラス名もないプログラムが起動しているか否かを検索するAPIを探しているのですが、見つけられません。
そんなAPIってなんですか?
0407デフォルトの名無しさん
2005/08/14(日) 18:16:37||
∧||∧
( ⌒ )
| | | ブチッ
⌒ ヽ
∪ ノ
∩∪∩
(・∀・| | ウヒョー
| |
⊂⊂____ノ
0408デフォルトの名無しさん
2005/08/14(日) 18:17:39MUTEXではいかんのか?
0409デフォルトの名無しさん
2005/08/14(日) 18:23:03⌒ ヽ
∪ ノ
∩∪∩
(・∀・| | キタコレwww
| |
⊂⊂____ノ
|| ブス
||
||
0411デフォルトの名無しさん
2005/08/15(月) 02:01:46後輩にWinsock+LSPの使い方教えたいんだけどいい資料なくてこまってる。
0412デフォルトの名無しさん
2005/08/15(月) 02:38:19文字列化されたものは5個のパートに分かれてるし、何か不思議です。
0413デフォルトの名無しさん
2005/08/15(月) 02:41:08またかよ。
ウィルスやトロイの木馬やスパイウェア作りたい香具師は氏ね。
VC2003のサンプルなんか見てるようじゃダメ。
PSDKかDDK探せ。
0414デフォルトの名無しさん
2005/08/15(月) 02:47:370415デフォルトの名無しさん
2005/08/15(月) 05:09:550416デフォルトの名無しさん
2005/08/15(月) 05:21:08何の技術力もいらない「トロイの木馬」が目下最大の脅威だってのに気づいてない、
ただの時代遅れ。
0417デフォルトの名無しさん
2005/08/15(月) 06:41:04ちょっと調べればわかることを、
このスレで質問するような香具師は、
スクリプト・キディ
と同類と見なされても仕方ないだろ。
初心者はそんなものに手を出さずに、
大人しく順序を踏めってもんだ。
本物のハッカーやクラッカーなら、
ちょっと調べればわかることを質問したりはしない。
質問して答えをもらうまでの間に、自力で解決できてしまうから、
いちいち質問なんていう回りくどいことはしないものだ。
0418デフォルトの名無しさん
2005/08/15(月) 07:03:12持論語るのは勝手だが、
質問スレでそういう発言をする矛盾にまず気づこうな。
0419デフォルトの名無しさん
2005/08/15(月) 08:13:32日本語が読めない香具師ハケーン
0420デフォルトの名無しさん
2005/08/15(月) 08:41:110421デフォルトの名無しさん
2005/08/15(月) 09:46:47スクリプトキティ以下だろ。
0422デフォルトの名無しさん
2005/08/15(月) 10:32:46Lispの親戚?
0423デフォルトの名無しさん
2005/08/15(月) 13:09:53フックやLSPぐらいでガタガタ騒ぐんじゃないよ
0424デフォルトの名無しさん
2005/08/15(月) 13:30:250425デフォルトの名無しさん
2005/08/15(月) 13:56:22それ、昔のスローガンだから。
IPを記録するようになった今となっては、変えるのが面倒くさくて放置しているだけで・・・。
0426デフォルトの名無しさん
2005/08/15(月) 14:08:52IP記録と関係ねー
単におまいの妄想じゃないか
0427デフォルトの名無しさん
2005/08/15(月) 14:17:10今のスローガンは?
0428デフォルトの名無しさん
2005/08/15(月) 14:24:56おまいはここの運営かよw
0429デフォルトの名無しさん
2005/08/15(月) 14:42:030430デフォルトの名無しさん
2005/08/15(月) 14:47:15もう挽回は無理だから、Download板でスレ立てて戦ってこい、な?応援してやるから。
0431デフォルトの名無しさん
2005/08/15(月) 15:21:000432デフォルトの名無しさん
2005/08/15(月) 15:31:30そう思ったらわかってても答えちゃダメ?
0433デフォルトの名無しさん
2005/08/15(月) 15:34:13ちゃんとした日本語使っててマナーもしっかりしてる人なら、答える。
0434デフォルトの名無しさん
2005/08/15(月) 15:40:17スクリーンセーバでええやんと思いながら。
0435デフォルトの名無しさん
2005/08/15(月) 16:31:35リッチエディットでSetOptions(ECOOP_OR,ECO_NOHIDESEL);を指定すると、
スクロールバーの表示がおかしくなるのですが、
このような不具合をご存知な人はいますか?
0436デフォルトの名無しさん
2005/08/15(月) 19:56:01どうすればいいでしょうか?
上訳:DLL側でEXE側のデータをインポートできませんか?
やっぱりメモリマップドファイルを使わないといけないんでしょうか?
御解答お願いします。
0437デフォルトの名無しさん
2005/08/15(月) 20:01:060438デフォルトの名無しさん
2005/08/15(月) 20:03:17EXE⇔DLL間で直接そーゆーことをするのはダメ。
やりたい操作を一つずつ関数でラップしてください。
0439デフォルトの名無しさん
2005/08/15(月) 20:06:08モードレスダイアログボックスに
リッチエディットコントロールを貼り付けたもの使っています。
普通のエディットコントロールでは、使えた右クリック
が使えないのですが自分で作成するしかないのでしょうか。
0441デフォルトの名無しさん
2005/08/15(月) 22:16:45メモリを管理している人が違うから怒られて当然。
std::vectorの実装がEXEとDLLで寸分違わぬ保証をしてあげない限り、生で渡すのはダメ。
基本的にDLLとEXE間では、C++のオブジェクトはやりとりできません。
0442デフォルトの名無しさん
2005/08/15(月) 22:23:05応用的には、拡張DLLとかいうのを使えば可能(MFCなんかで使ってる)。
詳しくは忘れた。
0443デフォルトの名無しさん
2005/08/15(月) 22:30:47ランタイムをDLLにすればええんでないの。
0444デフォルトの名無しさん
2005/08/15(月) 22:37:55機械語に変換されてしまえばオブジェクトもへちまもない。
0445デフォルトの名無しさん
2005/08/15(月) 22:57:250446デフォルトの名無しさん
2005/08/15(月) 22:58:01わかって無さ杉。
0447デフォルトの名無しさん
2005/08/15(月) 22:59:27オマエガナー
0448デフォルトの名無しさん
2005/08/15(月) 23:02:02C++のオブジェクト概念と、COMのオブジェクト概念は同じものなのかな?
0449デフォルトの名無しさん
2005/08/15(月) 23:02:280450858
2005/08/15(月) 23:12:39たのむ・・・・○rz。
0452デフォルトの名無しさん
2005/08/16(火) 02:02:31l5って言われてもどれか判らない罠。
まぁ、ハンドルで判るわけだが。
0453デフォルトの名無しさん
2005/08/16(火) 02:49:43VC6でやったら普通にWM_IME_STARTCOMPOSITIONきたけど?
もしかしてIMEをONにしないで文字入力してるとかじゃないよな?
0454デフォルトの名無しさん
2005/08/16(火) 07:13:26てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる
0455デフォルトの名無しさん
2005/08/16(火) 10:20:50ReadConsoleInput でマウスイベントが拾えません。
入力のモードに ENABLE_MOUSE_INPUT は含めています。
どうしたらいいのでしょうか。
Windows2000 を使っています。
0456デフォルトの名無しさん
2005/08/16(火) 15:36:58過去ログ見てて出てきた
hwndTaskbar = FindWindow("Shell_TrayWnd", NULL);
SetWindowPos(hwndTaskbar,NULL,0,0,960,32,SWP_NOZORDER | SWP_NOSENDCHANGING);
でやると一瞬だけ変化して、すぐに戻ってしまいます。
ShowWindowは普通に持続するみたいなんでなんとかなるんじゃないかと思ったんですが (;´Д`)
どうすれば出来ますかね?
0457デフォルトの名無しさん
2005/08/16(火) 16:14:160458デフォルトの名無しさん
2005/08/16(火) 18:49:28そんなソフトを使いたいか?
ま、>>456の作ったソフトを使うわけじゃないが。
0459デフォルトの名無しさん
2005/08/16(火) 19:04:44実際にしつこく繰り返してみたらタスクバーがのびたり縮んだりを高速で繰り返して面白すぎることに
0460858
2005/08/16(火) 19:20:33え、ってことは、日本語入力モードが切り替わったときなんですか?
変換可能な文字(即ち下線付き状態)を入力し始めたら、WMstartがきて、
変換可能な文字の状態を確定(単にリターンキー)したら、WMendがくる
んじゃないんですか??
0461858
2005/08/16(火) 19:24:39確かにVC++のサイトでは、WMIMESTRATCOMPOSITIONの説明が
多数掲載されていますね。そして、なんてことはない
特に意識することなく、メッセージ(&H10D)(0x010D)が発生していますよね。
でも、僕の場合、だめなんです。
112とか、84とか、133とかは、ちゃんときてますし、
200(マウスの移動)なんてのもしっかり発生しています。
(WndProcないで、Msg.ToString()をConsole.WriteLineして監視しました)
でも、肝心の、0x010Dとか、0x010Eとかがきてくれないんです。
(禁断の壷をインストールしたら、ものすごく快適になりました)
0462デフォルトの名無しさん
2005/08/16(火) 19:26:18WM_GETMINMAXINFO を何とかしてみるとか?
0463858
2005/08/16(火) 19:37:13{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
Console.WriteLine(String.Format("{0,5:X}",m.Msg));
base.WndProc(ref m);
}
}
}
もう一度、新しいWindowsApplicationを作ってみました。
フォームにテキストボックスはりつけただけです。
ソースはこれだけです。
IMEを切り替えても(キーボードの左上の「半角/全角」ボタンを
連打しても)、010Dや、010Eはきません・・・(T_T)
0464デフォルトの名無しさん
2005/08/16(火) 21:09:09.NET(つかC#?)はよく分からんけど、それですべてのメッセージが来るわけ?
なんかフィルタリングされてるとかじゃないの?
0465デフォルトの名無しさん
2005/08/16(火) 21:42:44とりあえずSetWindowsHookExのWH_MOUSE_LLでマウスのポジションなど取得出来るようになったのですが、
どのウインドウの上にいるか調べる方法で詰まっています。
何方かわかる方よろしくお願いします。
0466858
2005/08/16(火) 21:43:42WndProc関数内で参照できないメッセージ(フィルタ排除されるメッセージ)
ってあるんですか??
http://www.google.com/search?num=50&hl=ja&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg+WndProc&lr=lang_ja
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg&num=50
http://wisdom.sakura.ne.jp/system/winapi/win32/win9.html ←??
0467デフォルトの名無しさん
2005/08/16(火) 22:08:42Win32ではメッセージはちゃんと飛んで、ちゃんと受け取れるので、
あとはC#スレにいったほうがいい。
たぶんコーディング方法を間違えてるとかだろ。
0468デフォルトの名無しさん
2005/08/16(火) 22:10:30spy++(VC++ツールにあるでしょう)で適当なFlameにカーソル当てたときのメッセージ見たところ
WM_SETCURSORで戻ってくるときに、hWndが何かしらのパラメータとして与えられていた
おそらく、コールバック関数のいわゆるLOWORD(wParam)か、HIWORDに入れられていると思う(uMsgの値により、変わる模様)
自分だったら、フレームが立ち上がったときのハンドルをGetWindowLongあたりで取得しといて、そのハンドル値と一致したら
それは、フォーカスされたhWndハンドルでってことで、なんちゃらかんちゃら・・・
とやってみると思う
0469858
2005/08/16(火) 22:13:520470858
2005/08/16(火) 22:27:36http://pc8.2ch.net/test/read.cgi/tech/1122001458/34-#tag36
0471デフォルトの名無しさん
2005/08/16(火) 22:37:10燃えているのか。
0472デフォルトの名無しさん
2005/08/16(火) 22:47:04当然親たるFormにはまわってこない、と。
0473858
2005/08/17(水) 01:11:21public class TextEX : TextBox
{
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x010D:
this.Parent.Text = "start";
break;
case 0x010E:
this.Parent.Text = "end";
break;
default:
break;
}
base.WndProc(ref m);
}
一応、できました。
食われてたんですね、それを早くいってくださいょぅ・・・。
これ、派生クラス作らないといけないんですか?どうしても。
0474デフォルトの名無しさん
2005/08/17(水) 01:15:090475413
2005/08/17(水) 02:15:59別にこれ使われたところで問題ないと思うんだけどなんでそんなに
ウイルスと関連づけようとするの?
0476デフォルトの名無しさん
2005/08/17(水) 09:26:12GetCursorPos
WindowFromPoint
ChildWindowFromPoint
0477デフォルトの名無しさん
2005/08/17(水) 09:27:42フックでもしとけ
0478デフォルトの名無しさん
2005/08/17(水) 15:25:09SetWindowsHookExでWH_MOUSEでグローバルフックを掛けているつもりなのですが、
なぜかフックのDLLを呼び出してる側のウインドウの上でしかメッセージが送られてきません。
そのほかのウインドウ、デスクトップ上だとメッセージが送られて来ません。
(ローカルフックみたいな感じ?)
コードはこんな感じなんですが、
#pragma comment(linker, "/section:Shared,rws")
#pragma data_seg("Shared")
HHOOK hMouse = NULL ;
#pragma data_seg()
LRESULT CALLBACK hookProcMouse( int nCode , WPARAM wParam , LPARAM lParam )
{
パラメータの表示処理
}
// フックを仕込む
hMouse = SetWindowsHookEx( WH_MOUSE , (HOOKPROC)hookProcMouse , DLLのインスタンス , NULL ) ;
どうかよろしくお願いします。
0479デフォルトの名無しさん
2005/08/17(水) 18:22:05その文書の一部分を (書式や画像なども含めて) 一時的に記録し、
別の文書に貼り付けたいと思います。
Word文書の一部分をメモリに保持することは可能でしょうか?
試行錯誤してみたところ、Word文書を開いて、
抜き出したい部分 (Range オブジェクト) に対して
Copy メソッドを呼び出してクリップボードにコピーし、
クリップボードの "Embed Source" 形式のデータを
メモリに記録しておいて、後で貼り付けたいときに
そのデータをクリップボードに設定して、
WordのPasteメソッドを呼び出せば、
なんとかできるのはできました。
しかし、なんかスマートではないなーという感じがするのと、
これが本当に正しいやり方なのだろうか、という疑問がぬぐえません。
よい方法がありましたらご教授ください。
よろしくお願い致します。
※Win32 API とはあまり関係ないかもしれませんが、
他に聞くところがなかったので、ここで質問させていただきました。
0480デフォルトの名無しさん
2005/08/17(水) 19:40:260481デフォルトの名無しさん
2005/08/17(水) 19:40:32起動中はスクリーンセーバーを無効にしたいと思っています。
どうやったら、無効にできるんでしょうか。
0482デフォルトの名無しさん
2005/08/17(水) 19:56:33それを書き換え、ゲームが終了したら元に戻す
0483デフォルトの名無しさん
2005/08/17(水) 19:58:26LRESULT CALLBACK WndProcTaskBar(HWND, UINT, WPARAM, LPARAM);//プロトタイプ宣言
(中略)
hTaskbar=FindWindow("Shell_TrayWnd",NULL);
m_oldWndProcTaskBar = (WNDPROC)GetWindowLong(hTaskbar GWL_WNDPROC);
SetWindowLong(hTaskbar, GWL_WNDPROC, (LONG)WndProcTaskBar);
としていて、WndProcTaskBarが一度も呼ばれてないようなんですが、どうすればよろしいでしょうか?
ShowWindow(hTaskbar,SW_HIDE);で試すと効くんで、hTaskbarの中身は大丈夫なんじゃないかと思うのですが……
0484デフォルトの名無しさん
2005/08/17(水) 20:07:06他のプロセスを乗っ取る場合はそのようにやってもアドレス空間が違うのでうまくいかないのでは?
WndProcTaskBarはDLL内に書いてそれをアタッチさせないとだめかと思う。
漏れもよくわかってないかもしれないけど、とにかく他プロセスへのアクセスは単純でない。
0485デフォルトの名無しさん
2005/08/17(水) 20:13:52>An application can subclass a system class, but should not subclass a window class created by another process.
0486デフォルトの名無しさん
2005/08/17(水) 20:18:43システムフックのときみたいなもんですかね?
試してみます
>>485
XPで組んでます。
まぁtclock2chでもやってたんで(アレは時計だけサブクラス化してタスクバー自体はフックしてるみたいですが)、
サブクラス化しちゃっても大丈夫かと思ったんですが。
0487デフォルトの名無しさん
2005/08/17(水) 20:27:34WM_SYSCOMMANDメッセージでwParamが
SC_SCREENSAVEの時、0以外を返す。
SC_MONITORPOWERてのもある。
0488デフォルトの名無しさん
2005/08/17(水) 20:31:26それは再起動しないと有効にならないだろ
0489デフォルトの名無しさん
2005/08/17(水) 20:47:08Sharedの定義をきちんとdefファイルに書いてあるか?
とりあえず「パラメータの表示処理」ってやつをOutputDebugStringで出力して本当に取れてないか確認しれ
0490デフォルトの名無しさん
2005/08/17(水) 21:30:44その方法じゃデスクトップは取れない
あと、他のウィンドウのメッセージは何を取ろうとしてる?
例えばWM_LBUTTONDOWNはクライアント領域じゃないと送られてこない
非クライアント領域だったら別のメッセージが飛んでくる
あと、リストビューとかもWM_LBUTTONじゃ取れない
0492デフォルトの名無しさん
2005/08/17(水) 22:21:00自分の窓をアクティブにせずに、
他の窓への入力情報を得るにはどうしたらいいんでしょうか。
キーボードフォーカスを受け取ったら対象のウィンドウに対してSetFocus
0494デフォルトの名無しさん
2005/08/17(水) 23:04:32AttachThreadInput() はどう?
0496デフォルトの名無しさん
2005/08/17(水) 23:24:460497デフォルトの名無しさん
2005/08/17(水) 23:43:06無理ではないが。
0499デフォルトの名無しさん
2005/08/18(木) 00:55:49どこか頭の調子でも悪いの?
0501デフォルトの名無しさん
2005/08/18(木) 01:08:56日本語変換が終わった瞬間に「WM_IME_ENDCOMPOSITION」が来て
そのあと変換された文字が連続して「WM_IME_CHAR」で流れて来るみたいですが、
このWM_IME_CHARが文字数分すべて流れ終わった瞬間を知りたいのですが、
どうしたらよいでしょうか?
0502デフォルトの名無しさん
2005/08/18(木) 04:01:18IMEで漢字変換確定後に流れてきた「WM_IME_CHAR」のWPARAMの文字コードを
wstring型の文字列に積んでいくにはどうしたらいいでしょうか。
型変換の方法がわからないので「wstr+=wparam」のように
そのまま積んでみたのですが文字化けして全然ダメでした。
0503デフォルトの名無しさん
2005/08/18(木) 07:57:30TerminateProcessを普通は使う
ExitProcessを使いたいなら対象のアプリにもぐりこんでやれば使えるが・・・
0504デフォルトの名無しさん
2005/08/18(木) 08:34:05プロセスの終わらせ方のバリエーションとしては、
プロセスをジョブに割り当てて、クオータみたいなもので管理して、
終了させることはできたような気がする。
0505デフォルトの名無しさん
2005/08/18(木) 11:51:490506デフォルトの名無しさん
2005/08/18(木) 11:57:22「簡易編集モード」を含めたコンソールウィンドウ設定プロファイルは、キャプション文字列ごとにレジストリに保存される。
CreateProcessの引数にコンソールウィンドウのキャプション文字列を指定する項目がある。
・・・あとは判るな?
0507501-502
2005/08/18(木) 14:01:040508デフォルトの名無しさん
2005/08/18(木) 15:42:370509デフォルトの名無しさん
2005/08/18(木) 16:28:08なんで?
0510デフォルトの名無しさん
2005/08/18(木) 16:41:19あと、只でアドバイス貰ってるんだから、せめてその成果くらい提示するのがマナーってもんだろ。
0511デフォルトの名無しさん
2005/08/18(木) 17:55:310512デフォルトの名無しさん
2005/08/18(木) 17:59:010513デフォルトの名無しさん
2005/08/18(木) 18:05:49資源は有限だから。
0514デフォルトの名無しさん
2005/08/18(木) 20:08:06EM_LIMITTEXTでエディットの容量を3文字にして、
普通に入力すると3文字分でEN_MAXTEXTのメッセージを受け取れるんですが
SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)"ABCDE");
という具合に3文字以上挿入した時エディットの上限を超えた
メッセージ(EN_ERRSPACEだと思うんですが)を
受け取りたいのですがうまくいきません。
考え方間違ってるんでしょうか。よろしくお願いします。
0515デフォルトの名無しさん
2005/08/18(木) 20:16:470516デフォルトの名無しさん
2005/08/18(木) 20:27:19すみません。
メッセージを受け取って処理したいんですが。
メッセージが受け取れないってことです。
0517デフォルトの名無しさん
2005/08/18(木) 21:57:040518デフォルトの名無しさん
2005/08/18(木) 23:12:26MSDNに思い切り書いてある。
0519ya-su
2005/08/18(木) 23:36:11ReDim Pix(x, y) as byte に入れているのですが、
ペイント系ツールのパレットと違う値が入っています。
とりあえず、0から12の値が返っています。
そもそも、Getdibitsでパレット番号を取得できるのかということも、
ぐぐっても確認できません。
DIB_PAL_COLORSを最後の引数として返ってくるものは、
パレット番号なのでしょうか?
格納するReDim Pix(x, y) as byte が悪いのでしょうか?
0520デフォルトの名無しさん
2005/08/18(木) 23:39:58リモートスレッド
0521デフォルトの名無しさん
2005/08/19(金) 00:31:220522デフォルトの名無しさん
2005/08/19(金) 00:49:380523デフォルトの名無しさん
2005/08/19(金) 04:51:14>>405
>>407
>>409
0525デフォルトの名無しさん
2005/08/19(金) 14:08:09その場合、SetClipboardData関数の第一引数にどれを使えばいいのかわかりません。
CF_TEXTなどは単に文字列を転送する場合のみに使用するから、ファイルのデータを転送したい場合は使わないんですよね?
第一引数を何にすればいいのか。ファイルのデータをどういうフォーマットで転送すればいいのか、
教えてください。
0526デフォルトの名無しさん
2005/08/19(金) 14:23:37クリップボードへのファイルのコピーって、
たんにショートカットをコピーしているだけじゃないのかな。
0527デフォルトの名無しさん
2005/08/19(金) 14:43:13中身じゃなくてファイル名渡すべきじゃない。
それ以外のことがしたいの?
0528デフォルトの名無しさん
2005/08/19(金) 14:49:44SetClipboardData(CF_TEXT, ファイル名の文字列を格納したメモリオブジェクト);
↑で出来るってことですか?
0529デフォルトの名無しさん
2005/08/19(金) 15:18:360530デフォルトの名無しさん
2005/08/19(金) 15:20:090531478
2005/08/19(金) 15:37:06レスありがとうございます。
>>>478
>その方法じゃデスクトップは取れない
>あと、他のウィンドウのメッセージは何を取ろうとしてる?
>例えばWM_LBUTTONDOWNはクライアント領域じゃないと送られてこない
>非クライアント領域だったら別のメッセージが飛んでくる
>あと、リストビューとかもWM_LBUTTONじゃ取れない
具体的にやろうとしてることは、アプリのウインドウからマウスが外れた事を察知させようとしてます。
そこで、とりあずグローバルフックを掛けて流れてくるメッセージで使えそうなものを探そうと思ってました。
また何か情報ありましたよろしくお願いします。
0532デフォルトの名無しさん
2005/08/19(金) 15:46:32やろうとしてる事はActiveXのメソッドに送られるパラメータや、プロパティーへ読み書きされる値などを見たいと思ってます。
よろしくお願いします。
0533デフォルトの名無しさん
2005/08/19(金) 16:15:38コンボボックスでスクロールバーが表示されるようにするにはどうすればいいんですか?
WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST
だと大きさをオーバーした項目はキーボードの↑↓を押してやらなければ見えません
CBS_DISABLENOSCROLLなどのスクロールのスタイルがあるということはスクロールバーって出ますよね?
0534デフォルトの名無しさん
2005/08/19(金) 16:42:470535デフォルトの名無しさん
2005/08/19(金) 16:53:46WM_MOUSEMOVEでTrackMounseEvent使って
WM_MOUSELEAVE処理すればいいんじゃね?
0536デフォルトの名無しさん
2005/08/19(金) 20:52:16WS_VSCROLL
0537デフォルトの名無しさん
2005/08/19(金) 20:56:36MSDN読め。
> DIB_PAL_COLORS
> カラーテーブルは、現在の論理パレットへの 16 ビットのインデックスの配列です。
0538デフォルトの名無しさん
2005/08/20(土) 00:23:02同じインタフェイスとGUIDを持ったActiveX作ってハックする。
0539デフォルトの名無しさん
2005/08/20(土) 00:45:01使ったことないから当てずっぽうだけどOLESPY
0540デフォルトの名無しさん
2005/08/20(土) 19:04:05DirectXは使っておらずエディターを使えば
綺麗なアニメーションのようなものも作れます。
より綺麗にちらつきのないアニメーションを作るには
ダブルバッファリングとかいう事が必要らしいのですが
DirectXを使わないと難しいのでしょうか?
0541デフォルトの名無しさん
2005/08/20(土) 19:12:19スレ違いじゃね?
ダブルバッファリングってのは一つ一つウィンドウに描画せずに
一度裏で全部描いてからそれを一気にウィンドウに描画するって技術だから
DirectXとは直接関係ない
0542デフォルトの名無しさん
2005/08/20(土) 19:46:07ここは大当たりだけど
>ダブルバッファリングってのは一つ一つウィンドウに描画せずに
ここは大外れ
正しくは、
最初から前面の画面に直接描画せずに、
一旦別の場所で全ての描画処理(合成など)をしてから、
最終的な結果の画像のみを前画面に描画する技法
0543デフォルトの名無しさん
2005/08/20(土) 19:49:250544デフォルトの名無しさん
2005/08/20(土) 20:00:490545デフォルトの名無しさん
2005/08/20(土) 20:04:110546デフォルトの名無しさん
2005/08/20(土) 20:24:030547デフォルトの名無しさん
2005/08/20(土) 20:26:360548デフォルトの名無しさん
2005/08/20(土) 21:07:110549デフォルトの名無しさん
2005/08/20(土) 21:18:45(・ε・)HSPでも触ってくればぁ?
プラグイン開発用のドキュメント見とけばグラフィック周りの実装が分かりやすい仕様になってるから理解するにはいいかと。
0550デフォルトの名無しさん
2005/08/20(土) 23:47:48馬鹿にしやがって
0551デフォルトの名無しさん
2005/08/21(日) 00:02:400552デフォルトの名無しさん
2005/08/21(日) 01:09:08そうだよ。
0553デフォルトの名無しさん
2005/08/21(日) 06:20:05そのために、特定のプログラムが生成されたことを監視したいのですが、
新たなウインドウが生成された場合にシステムからウインドウメッセージを受けとるようなことって出来るのでしょうか?
できるのであれば、ヒントになるキーワードを教えてください。
それとも、10秒おきぐらいに、自らFindWindowで特定のウインドウが起動されていないかチェックする必要があるのでしょうか?
0554デフォルトの名無しさん
2005/08/21(日) 06:34:14同じAPIで出来るんだけど…
フックタイプを隅から隅まで読んで見ると良い。
0556デフォルトの名無しさん
2005/08/21(日) 09:27:49右下のつまみでサイズ変更をする時に、ListCtrlの描画がちらつきます。
BackGroundをいったん消してから描画しているからなのでしょうが、
そのBackGroundの消去作業をしないようにするにはどうすればいいのでしょうか?
通常のRegisterClassExでウィンドウ登録をする場合だとWM_BKERASEを呼び出して、背景の消去をしないようにできますが、
一般的にコントロールはウィンドウプロシージャを持たないので、それを使えません。
0557デフォルトの名無しさん
2005/08/21(日) 09:30:010559デフォルトの名無しさん
2005/08/21(日) 11:45:500560556
2005/08/21(日) 11:56:20オナドロとそのサブクラを実装したかっただけです
午後から待ち合わせがあるのでグッバイ
またよろしくね。
0561556
2005/08/21(日) 12:00:440562デフォルトの名無しさん
2005/08/21(日) 13:04:01オナドロって言うとなんかやらしい。
0563ya-su
2005/08/21(日) 16:49:42パレット番号のことではないとうことなのか、なんなのかが分かりません。
誰か分かりやすく説明してくれませんか?
>>519
MSDN読め。
> DIB_PAL_COLORS
> カラーテーブルは、現在の論理パレットへの 16 ビットのインデックスの配列です。
0564デフォルトの名無しさん
2005/08/21(日) 19:02:10まず「パレット番号」という言葉の意味を理解したほうがいい。
0565デフォルトの名無しさん
2005/08/21(日) 20:33:530566デフォルトの名無しさん
2005/08/21(日) 23:57:21メニューのボタンのENABLEDプロパティーを
FALSEに、変更したいのですが、
どうすればいいのでしょうか。
0567デフォルトの名無しさん
2005/08/22(月) 00:06:18ちったぁ自分で調べてみやがれ
0568デフォルトの名無しさん
2005/08/22(月) 01:19:36あんな糞資料で良質なプログラマーが育成されると思ってるのかぁ?
0569デフォルトの名無しさん
2005/08/22(月) 01:52:560570デフォルトの名無しさん
2005/08/22(月) 01:58:11ヒント下さい
0571デフォルトの名無しさん
2005/08/22(月) 03:08:58わからせよう、という気がない。
まあ、だから本が売れるわけだが。
0572デフォルトの名無しさん
2005/08/22(月) 03:54:08windowsゲームプログラミングを読み終わったのですが、
まだゲームを作るための知識は不十分に感じます。
そこで何か本を買おうと思っているんですが、何がオススメでしょうか?
今の所、プログラミングWindowsあたりにしようと思っています。
この本についての意見もお願いします。
0573デフォルトの名無しさん
2005/08/22(月) 04:17:22明らかにスレ違い
0574デフォルトの名無しさん
2005/08/22(月) 07:31:05ゲ製作技術
http://pc8.2ch.net/gamedev/
0575デフォルトの名無しさん
2005/08/22(月) 09:39:42行の高さを変更するListView_???はありますか?
0576デフォルトの名無しさん
2005/08/22(月) 12:10:19Platform SDKをインストールしたんですが、spyがありませんでした。
Platform SDKにはspyはないのでしょうか?
当方、VB6の評価版でプログラムつくっているのでMSDNもありません。
c++かVisual Studio買わないとだめでしょうか?
0577デフォルトの名無しさん
2005/08/22(月) 12:13:17PSDKにはspyあったと思うけどなぁ。
サンプルソースをもう一度探してみ。
0578デフォルトの名無しさん
2005/08/22(月) 12:14:340579デフォルトの名無しさん
2005/08/22(月) 12:15:080580デフォルトの名無しさん
2005/08/22(月) 13:11:41SetForegroundWindow(hWnd);
SetFocus(hWnd);
SetCursorPos(mousex,mousey);
mousepos=mousex|(mousey<<16);
SendMessage(hWnd,WM_LBUTTONDOWN,mousepos);
SendMessage(hWnd,WM_LBUTTONUP,mousepos);
としてもクリックされたと認識してくれないので
お願いします
0581デフォルトの名無しさん
2005/08/22(月) 13:21:42私はこんなことやってた。
::PostMessage(m_hBtns[btnNo], WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(0, 0));
Sleep(1);
::PostMessage(m_hBtns[btnNo], WM_LBUTTONUP, 0, MAKELONG(0, 0));
0582デフォルトの名無しさん
2005/08/22(月) 13:24:25binディレクトリ内あたりにあるはずだけどなぁ‥‥まあ使いやすい物じゃないけどな。
って今入ってるPSDK見たら見あたらないorz
うちはWinspectorってフリーソフト使ってるけど
0583575
2005/08/22(月) 13:34:50ListViewって、行の高さを変えられないんですか?
・・・。
使えない。
0584デフォルトの名無しさん
2005/08/22(月) 13:37:590585デフォルトの名無しさん
2005/08/22(月) 13:44:48変えられます。
0586580
2005/08/22(月) 13:46:41あー認識してくれないです…
こういうのも試してみたんですけど
SendMessage(hWnd,WM_NCLBUTTONDOWN,(WPARAM)HTCLIENT,(LPARAM)(x|(y<<16)));
Sleep(1);
SendMessage(hWnd,WM_NCLBUTTONUP,(WPARAM)HTCLIENT,(LPARAM)(x|(y<<16)));
対象ウィンドウがdelphiだとだめとかあるんでしょうか
0587デフォルトの名無しさん
2005/08/22(月) 13:49:19実際にマウスをクリックしたときに、どんなメッセージが流れるか見てみたら?
>581もそれであたりをつけたし。
0588デフォルトの名無しさん
2005/08/22(月) 14:03:40Shell_TrayWndを親にもつtooltips_class32を探し出して、
そのウインドウスタイルにTTS_BALLOONをSetWindowLongAしました。
(WS_BORDERも消しました。)
バルーンにはなるんですがなぜか場所がかなり上によってしまいます。
これを修正する方法を御存知の方いらっしゃいませんか?
対象OSはXPでVisualStyleが適用されています。
0589572
2005/08/22(月) 15:03:29ゲーム製作のためだけに読むには適していないのか
などのAPI関連の書籍についての意見を伺いたかったのですが、
目的がゲームなだけでスレ違いでしょうか?
APIに関してはゲ製作板よりはこちらの方が詳しいと思ったのですが。
0590デフォルトの名無しさん
2005/08/22(月) 15:11:14それこそ、Advanced Windows嫁、という決まり文句になってしまうけど。
0591デフォルトの名無しさん
2005/08/22(月) 15:14:20使ったこと無いけどSendInputはどうだろうか?
0592デフォルトの名無しさん
2005/08/22(月) 15:15:18「VC++とAPIでゲームを作りたい」
こんな曖昧な情報でどう判断しろと。
まあ、マインスイーパーとかならどうにでもなるが‥‥
0594デフォルトの名無しさん
2005/08/22(月) 15:27:09ttp://www.google.co.jp/search?hl=ja&c2coff=1&q=MSDN+INPUT+Structure&lr=
0595デフォルトの名無しさん
2005/08/22(月) 15:28:28あるいはmouse_eventを使うとか。
0596デフォルトの名無しさん
2005/08/22(月) 15:29:39ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputstructures/input.asp
あるじゃねーか
0597デフォルトの名無しさん
2005/08/22(月) 15:30:34http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/sendinput.asp
まず目次を同期させて、そのカテゴリのReference>Structuresに関連構造体の情報はある。
日本語版の場合は構造体の説明ページそのものがないから投げ捨てろ。
0598デフォルトの名無しさん
2005/08/22(月) 15:30:57mouse_eventがmousou_eventに見えなくもない。
0599デフォルトの名無しさん
2005/08/22(月) 15:32:57つーかSendInputの引数の説明のところにINPUTへのリンク張ってあるじゃん。
0600デフォルトの名無しさん
2005/08/22(月) 15:35:310601597
2005/08/22(月) 15:36:14( ノ∀`)アチャー
PlatformSDKとかだとParametersの説明にもリンク張られてるからWeb版の下の関連項目に気付かなかったわ
ついでにURLがSendInputだし‥‥
||
|| バッ
∧||∧
(∩ ⌒ヽノ
\ _⊃ アラヨット
∪ Σ
≡| ̄ ̄ ̄ ̄|
0602580
2005/08/22(月) 15:43:36みなさんありがとうございました できました!!
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,NULL);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,NULL);
SendInputのほう試してみました
同じ悩みを抱えてたひとどうぞ
static const DWORD click[] = {
INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0,
INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, 0,
};
SendInput(2,click,sizeof(INPUT));
0603デフォルトの名無しさん
2005/08/22(月) 17:11:15USBのキャプチャユニットとそれに接続するCCDカメラがあります。
USBキャプチャにはドライバとキャプチャソフトが付属しており、
それを使うとGUIから任意のタイミングで画像を取り込むことがで
きます。
今回はCCDカメラに映った映像をコマンドラインから操作して画像
を取り込む必要があります。
※イメージとしてはCygwinなどでコマンドを打てばそのタイミングで
画像をフォルダに保存するといったようなことをしたい。
要はGUIソフトの機能をCUIで実現したいのですが、どのような方法
で取り組めばよいのでしょうか。
環境はWin2000で実現するのに使う言語はなんでもいいです。
0604デフォルトの名無しさん
2005/08/22(月) 17:11:55マウス操作をmouse_event関数で扱いたいのですが、
任意の場所のマウス座標を取得して、他の場所にマウスを移動させても
キーを押せば元に戻ってくるような、プログラムはどうすればできるんでしょうか?
座標取得にGetCursorPosを使うんでしょうか?座標の値が違うんですが・・・
0605デフォルトの名無しさん
2005/08/22(月) 17:14:20DirectShowとかでやるんじゃないかなあ
0606デフォルトの名無しさん
2005/08/22(月) 17:17:48任意の場所のマウス座標を取得して、他の場所にマウスを移動させても
キーを押せば元に戻ってくるようにプログラムする。
>座標の値が違うんですが・・・
どう違うんだ?
0607デフォルトの名無しさん
2005/08/22(月) 17:26:05すみません。
SetCursorPosを使ったら解決しました。
mouse_eventが使いたかったのは左右クリックの機能があったからですが、
dx と dy の各パラメータが 0〜65,535と書いてあったし、 DWORDとintでは型が合わん・・・と思ったら
機能を分けて使えばよかったんですね。
失礼しました。
0608603
2005/08/22(月) 17:26:33確かにキャプチャソフトはDirectXを入れないと動きませんでした。
とりあえずWin32APIプログラミングで実現するというアプローチ自体は
合っているのですね。
0609デフォルトの名無しさん
2005/08/22(月) 17:30:21違うだろ
GetCursorPosで手に入るのは、0 ≦ x ≦ 現在の画面サイズ の値だけど
mouse_eventで使うのは 0 ≦ x ≦ 65535 だ
画面サイズの設定が800*600だとすれば、GetCursorPosでは左上(0,0)、右下(799,599)だが
mouse_eventは常に左上(0,0)、右下(65535,65535)だ
画面が長方形なのに対して、mouse_eventのは正方形なんだよ
0610デフォルトの名無しさん
2005/08/22(月) 17:56:52画面の解像度が1024*768なので
xx = 65535 / 1024;
yy = 65535 / 768;
として、GetCursorPos座標を掛けたら(x * zz, y * yy)
mouse_eventで無理やりですができました。
自分のパソコンでしか使わないプログラムなので
今は何とか困りませんが・・・・
0611デフォルトの名無しさん
2005/08/22(月) 18:28:25以下のエラーが出てしまいビルドできませんでした。
error C3861: 'mciSendString': 識別子は、引数依存の照合を使用しても見つかりません。
原因がまったく分かりません。
偉い人教えてください。お願いしますm(_ _)m
OS:WindowsXP
エディタ:VC++.NET
0612 611
2005/08/22(月) 18:52:260613デフォルトの名無しさん
2005/08/22(月) 18:52:36GetSystemMetrics(SM_CXSCREEN)とかつかえばいいんでない?
0614デフォルトの名無しさん
2005/08/22(月) 19:32:04純粋な疑問だがマルチディスプレイだとどうなるのかな。
0616デフォルトの名無しさん
2005/08/22(月) 23:37:16mop.dwCallback = (DWORD)hWnd;
mop.lpstrDeviceType = NULL;
mop.lpstrElementName = "bgm0006.mp3";
iErr = mciSendCommand(
NULL, MCI_OPEN, MCI_OPEN_ELEMENT,
(DWORD)&mop
);
if (iErr) {
mciGetErrorString(iErr, strErr, 1024);
MessageBox(hWnd, strErr, NULL, MB_OK);
return -1;
}
mciSendCommand(mop.wDeviceID,MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);
break;
case MM_MCINOTIFY:
MessageBox(NULL,"ポスト",NULL,MB_OK);
mciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);
break;
case WM_DESTROY:
mciSendCommand(mop.wDeviceID, MCI_CLOSE, NULL, NULL);
PostQuitMessage(0);
break;
上記のソースでmp3のループ再生をしようとしたのですが。
MM_MCINOTIFYメッセージがmciSendCommand(mop.wDeviceID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mpp);でポストされません。
どなたか教えしえてください。お願いします。
0617はる
2005/08/22(月) 23:57:500618デフォルトの名無しさん
2005/08/23(火) 00:02:43ある
0619はる
2005/08/23(火) 00:19:500620デフォルトの名無しさん
2005/08/23(火) 00:26:41おっぱい! おっぱい!
おっぱい おっぱい! おっぱい!
おっぱい! ∩ ∩ ノ) おっぱい!
おっぱい! 川 ∩ 川彡'三つ おっぱい!
おっぱい! ⊂ミ∩∧η∧∩彡⊃ おっぱい!
おっぱい!⊂三ミ (,,・Д・)彡三彡三⊃ おっぱい!
おっぱい! ⊂彡川⊂彡川ミ⊃ おっぱい!
おっぱい!⊂彡川∪⊃ U川彡⊃ おっぱい!
おっぱい! (ノ ∪ 川 ∪ミ) おっぱい!
おっぱい! ∪ おっぱい!
おっぱい! おっぱい! おっぱい!
おっぱい! おっぱい!
0621デフォルトの名無しさん
2005/08/23(火) 00:28:15ttp://www.google.com/search?hl=ja&lr=&ie=UTF-8&oe=UTF-8&q=Windows+%E7%B5%82%E4%BA%86%20%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8&num=50
0622はる
2005/08/23(火) 00:37:10私でも分かるようなメッセージを教えてください。
0623デフォルトの名無しさん
2005/08/23(火) 00:38:54>Windowsが終了するときのメッセージを取得
そのまんまのがある雀
0624デフォルトの名無しさん
2005/08/23(火) 06:33:29オマエでも分かるようなメッセージを自分で探し出せ
0625デフォルトの名無しさん
2005/08/23(火) 07:32:03たとえば zipファイルを Xドライブにマウントして、あたかも普通のドライブであるかのように振舞いたい、ということです。
zipファイルをマウントするというのはあくまで例ですが、ようするに仮想ドライブへのアクセスを自分でハンドリングしたいという
ことになるのでしょうか。
ドライブが無理なら、ディレクトリに見えるのでもいいです。
これを実現するために必要なAPIや、あるいは調査をするためのキーワードなどを教えてください。
これができたらやりたいことはいっぱいあるのですが、たとえばCD(ROM)に書き込みができるように振舞う、なんてのがやりたいです。
書き込み可能に見えるドライブX を作り、最初ドライブX は CDと同内容一が見え、このドライブに対して書き込みが発生すると
その差分をHDDの適当なディレクトリに作って行き、次にドライブX を読むときには差分の方を優先して見せる、といった感じです。
0626デフォルトの名無しさん
2005/08/23(火) 07:35:150627デフォルトの名無しさん
2005/08/23(火) 07:49:30ソース付きの実例。
http://chitchat.at.infoseek.co.jp/vmware/vdkj.html
0628625
2005/08/23(火) 08:36:18ありがとう!
とりあえずそれが参考にしたという filedisk を落としてきた。
ソースが短くて読むのにはいいのですが、make の仕方がわかんないので困ったものです。
でも、ソース中に含まれるキーワードをぐぐると、結構それっぽいものがヒットするので、いつの日か何か作れることでしょう。
また、>>627 のリンクを少し見ただけでも、ディスクドライバとファイルシステムドライバがあるってことがわかりました。
自分のやりたいことは、きっとファイルシステムドライバも関連してくるんだろうと思います。
0629デフォルトの名無しさん
2005/08/23(火) 17:19:04クリティカルセッションではさむ(サンドイッチみたいな)かたちでよろしいのでしょうか?
よろよろ。
0630デフォルトの名無しさん
2005/08/23(火) 17:27:36それでいい
0631デフォルトの名無しさん
2005/08/23(火) 17:28:08どうした、具合でも悪いのか?睡眠と食事はちゃんと取れよ。
0632デフォルトの名無しさん
2005/08/23(火) 17:31:10クリティカルセクションな
0633629
2005/08/23(火) 17:33:50返事してくれてサンクス。
またよろしくなぁ。
おらはらへったぞ。
0634デフォルトの名無しさん
2005/08/23(火) 17:42:390635デフォルトの名無しさん
2005/08/23(火) 17:44:210636デフォルトの名無しさん
2005/08/23(火) 17:45:540637デフォルトの名無しさん
2005/08/23(火) 19:08:210638デフォルトの名無しさん
2005/08/23(火) 19:35:140639デフォルトの名無しさん
2005/08/23(火) 19:43:300640デフォルトの名無しさん
2005/08/23(火) 20:15:46インターフェースは公開されてなかったか?
ぐぐってもそれらしいのが見つからないんだが・・・
0641デフォルトの名無しさん
2005/08/23(火) 20:18:330642デフォルトの名無しさん
2005/08/23(火) 20:25:09OPENFILENAME の lpstrFileに複数ファイル情報を受け取るために
必要なバッファサイズを事前に知るにはどうしたらいいのでしょうか?
0643デフォルトの名無しさん
2005/08/23(火) 21:19:36まずはユーザーがいくつのファイルを選択するか
事前に知る方法を考えよう。
0644デフォルトの名無しさん
2005/08/24(水) 01:22:47大学で情報系を専攻しているのでAPIを本格的に勉強すべきか迷っています。
そこで質問なんですが、APIを勉強する利点ってどんな事があるんでしょか?
ググッてみてもAPIの勉強サイトは出てくるのですが、
APIを利用してできる事などの情報がなかなか見つかりません。
APIを利用してできる事を具体的に教えてください。
本当に初心者の質問で申し訳ありません。
0645デフォルトの名無しさん
2005/08/24(水) 01:23:540646デフォルトの名無しさん
2005/08/24(水) 01:30:350647デフォルトの名無しさん
2005/08/24(水) 01:33:00選択幅は Win32API だけじゃない事を伝えておこう。
0648デフォルトの名無しさん
2005/08/24(水) 01:43:01興味があるのに自分で試しもせずにぐーぐるやら人の意見をあてにしてるようじゃ
勉強する必要ないんじゃないかな。
仮に勉強を始めたとしても本格的にやってるつもりになるだけで終わると予想。
0649デフォルトの名無しさん
2005/08/24(水) 01:46:03俺も情報系の大学行ってるが、1回生って事もあって内容が物足りないので
純粋に新しい事を覚えたいって理由でCやらWin32APIやらをやってる。
やりたきゃやる、やりたくないならやらない。それで十分だろ>APIをすべきかどうか
覚えることの利点なんてやってりゃ分かると思ってるが
0650デフォルトの名無しさん
2005/08/24(水) 02:00:500651デフォルトの名無しさん
2005/08/24(水) 02:44:33何のために勉強するかっていう目的も持たずに
気分次第で手探りにやる程、向上心は低くありません。
自由な時間は限られているので自分のためになる事を
やろうと思って質問したつもりだったんですが、すいません。
もう興味本位に時間を潰せるほど責任感のない年齢じゃないんで。
0652デフォルトの名無しさん
2005/08/24(水) 02:49:55>ゲーム製作のために今APIを勉強しているのですが
とか言ってる割にWin32APIが何を指すのかすら理解して無くない?
0653デフォルトの名無しさん
2005/08/24(水) 02:52:590654デフォルトの名無しさん
2005/08/24(水) 03:02:47俺はやったことどころか興味すらないからどんな言語かも知らないけど
0655デフォルトの名無しさん
2005/08/24(水) 03:26:22>大学で情報系を専攻しているのでAPIを本格的に勉強すべきか迷っています。
が意味不明。大学で教えてくれるのならあえて勉強する必要など
ないと思っているのか?だとしたら向上心低いな。
つーか興味本位に時間潰せないとか言うほど心的余裕のない奴には無理だと思う。
素直にやめとけ。それでもやりたいというのならまずはちゃんとした文章書いて来い。
0656デフォルトの名無しさん
2005/08/24(水) 03:27:42Action game Programing Interface
の略なんだな。
0657デフォルトの名無しさん
2005/08/24(水) 03:38:20ゲーム製作ならDirectXSDKの勉強の方が直接的だろうね。
ゲーム以外のWindowsアプリを(.NETFrameWord使わず)作る必要があるなら
まあ、Win32APIの勉強はまず必要になってくるが、その必要に応じてその都度おぼえていけばいいんじゃないか?
0658デフォルトの名無しさん
2005/08/24(水) 03:40:24APIについて少しだけ勉強してそれにどんな利点があるのか調べようと努力したんだけどわからなかったと
適当にアピールしとけば誰か答えてくれると思ったんじゃない?
んで、返答が>>645-651だったからちょっと大人ぶった発言をしてみた若者だと予想w
0659デフォルトの名無しさん
2005/08/24(水) 04:02:30int main(){
return 0;
}
0660デフォルトの名無しさん
2005/08/24(水) 04:43:17それ知りたい!
だれか知ってる人いない?
0661デフォルトの名無しさん
2005/08/24(水) 06:03:08クラスタがチェーンしてることを利用して高速化する方法ってありますか?
0662デフォルトの名無しさん
2005/08/24(水) 06:13:25削除挿入したい情報が物理境界と一致することにどんな期待が持てるんだ?
俺だったらオンディスクでリスト構造やポインタ配列を作るだろうな、そういうことを考えているときは
0663デフォルトの名無しさん
2005/08/24(水) 07:00:27>>641
0664デフォルトの名無しさん
2005/08/24(水) 12:02:32よろしくおねがいします。
0665デフォルトの名無しさん
2005/08/24(水) 12:02:46英語の授業でいちいち単語の意味を教えないのと同じだ。
リファレンスで引っ張ってくるだけの単純作業を大げさに「勉強」と呼ぶ時点で終わってる。
0666デフォルトの名無しさん
2005/08/24(水) 12:08:10求むエスパー
0667664
2005/08/24(水) 12:10:09ブラウザのアドレス入力部って、file://***、http://***、ftp://****などプロトコール問わず一元的に読み込み事が可能じゃないですか、
そんな感じで、たとえば次のような感じで
FILE *fp = fopen( "http://www.yahoo.co.jp" , "r" ) ;
的な事が出来ればなぁ〜と考えてます。
0668デフォルトの名無しさん
2005/08/24(水) 12:20:45それもみんなWindowsでは関連付けでやっているからShellExecuteが使える。
ShellExecute(0, 0, TEXT("http://www.google.co.jp"), 0, 0, SW_SHOW);
0669デフォルトの名無しさん
2005/08/24(水) 12:21:380670デフォルトの名無しさん
2005/08/24(水) 12:24:36IEコンポーネントはどーよ
0671デフォルトの名無しさん
2005/08/24(水) 12:35:580672664
2005/08/24(水) 12:36:05>668さん
file://***、http://***、ftp://****などから取得出来るデータをファイルとして扱いと考えてます。
>670
>IEコンポーネントはどーよ
とりあえず「wininet.dll」ってのを今調べてみてます。
0673デフォルトの名無しさん
2005/08/24(水) 13:55:14>とりあえず「wininet.dll」ってのを今調べてみてます。
話がかみ合ってないのに正しい答えを見つけてるのは何故だろう
0674デフォルトの名無しさん
2005/08/24(水) 14:03:350675デフォルトの名無しさん
2005/08/24(水) 16:54:20中学校からやり直しておいで
0676デフォルトの名無しさん
2005/08/24(水) 17:48:04ワロタ
0677デフォルトの名無しさん
2005/08/24(水) 19:36:44率直に言って、興味本位で動けないような奴はろくな技術者にはなれない。
業務系PGならそれでもなんとかなるが(周囲に大迷惑かけるけどな)、
ゲーム関係ならなおさら「興味本位」は重要だぞ。
>>673
才能って奴じゃないか。
少なくとも>>644にはなさそうなものを持ってそうだ。
0678デフォルトの名無しさん
2005/08/24(水) 20:54:370679デフォルトの名無しさん
2005/08/24(水) 21:38:25ほんとに。
0680デフォルトの名無しさん
2005/08/24(水) 21:44:06.NETは今んとこ論外、重すぎ
0681デフォルトの名無しさん
2005/08/24(水) 21:45:24Win32APIはVisualComponentLibraryの何倍いいですか?
0682デフォルトの名無しさん
2005/08/24(水) 22:26:28VCLはよく知らないが、使いやすくなったMFCみたいなもんだろ?
それならVCLでできることは全てWin32APIで出来るし、VCLじゃ出来ないこともできる
その代わりややこしい
0683デフォルトの名無しさん
2005/08/24(水) 22:41:300684デフォルトの名無しさん
2005/08/24(水) 22:47:520685デフォルトの名無しさん
2005/08/24(水) 23:07:320686デフォルトの名無しさん
2005/08/24(水) 23:17:12そもそもCOMコンポの開発労力を削減するために設計されたもんだから、
Win32APIを網羅してるわけじゃないでしょ。
まあ、俺は結構好きなんだが。
0687デフォルトの名無しさん
2005/08/25(木) 00:00:55http://pc8.2ch.net/test/read.cgi/tech/1049790146/
質問という趣旨からズレはじめた(発展しそうな)ネタはこっちでやらないか。
移動した途端とぎれそうだが。
0688デフォルトの名無しさん
2005/08/25(木) 00:23:04おっ。俺はそのスレの339。
盛り上がってくれるとうれしい。
0689デフォルトの名無しさん
2005/08/25(木) 00:29:440690デフォルトの名無しさん
2005/08/25(木) 02:24:09ATLとWTLで、GUI周りのAPIはほとんど面倒見てくれるが。
正直、あとはAPI直に使ってもいいし、自分でラッパ書いてもいいんじゃないかと。
GUIだけは面倒だから自前で書きたくない。
0691デフォルトの名無しさん
2005/08/25(木) 06:49:18いくら理論上は可能でもアセンブラでオブジェクト指向のプログラムとか
組みたくない
0692デフォルトの名無しさん
2005/08/25(木) 06:50:170693デフォルトの名無しさん
2005/08/25(木) 12:19:380694デフォルトの名無しさん
2005/08/25(木) 13:05:510695デフォルトの名無しさん
2005/08/25(木) 13:12:05というより手元にVCLやMFCがないだけだが。
それ以外に直接API使わずにGUI書く方法があったとしても難しそうだし。
0696デフォルトの名無しさん
2005/08/25(木) 17:40:38御意
0697デフォルトの名無しさん
2005/08/25(木) 22:07:54今のところ俺も。
0698デフォルトの名無しさん
2005/08/25(木) 22:11:44と言いたいがそんなおまいらにはATLがないんだろうな。
0699デフォルトの名無しさん
2005/08/25(木) 22:21:190700デフォルトの名無しさん
2005/08/25(木) 22:29:56ttp://www.codeguru.com/Cpp/controls/menu/alternativemenu/article.php/c189/
この独自メニューを使わせてもらおうと思ったのですが、
日本語の項目をAppendすると文字化けしてしまいます
もちろん日本語フォントを指定済みです
原因が分かる方、教えて頂けないでしょうか
0701デフォルトの名無しさん
2005/08/25(木) 22:31:160702デフォルトの名無しさん
2005/08/25(木) 23:08:540704デフォルトの名無しさん
2005/08/25(木) 23:19:080705デフォルトの名無しさん
2005/08/26(金) 11:08:44CreateWindowをするさいにクラス名を渡しますが、
そのクラス名を取得したい場合、どうすればいいんでしょうか。
GetWindowLongで取得できますか?
0706705
2005/08/26(金) 11:13:240707デフォルトの名無しさん
2005/08/26(金) 11:47:47きくまえにえむえすでぃーえぬ(えいごばん)よめ
0708デフォルトの名無しさん
2005/08/26(金) 17:10:300709デフォルトの名無しさん
2005/08/26(金) 17:12:190710デフォルトの名無しさん
2005/08/26(金) 17:42:04WM_CREATEはCreateWindow(Ex)の中の人が呼ぶ。
0711デフォルトの名無しさん
2005/08/26(金) 17:58:21レスありがとうございます
0712デフォルトの名無しさん
2005/08/26(金) 19:01:270713デフォルトの名無しさん
2005/08/26(金) 19:13:100714デフォルトの名無しさん
2005/08/26(金) 19:47:05PathAddBackslashA などの ANSI 版 Path API は、
マルチバイト文字(CP932)を含むパスを
何の問題も無く利用することが出来ますでしょうか?
0715デフォルトの名無しさん
2005/08/26(金) 20:09:25Windowsはひらがなや漢字をフォルダ名に使えるし。
0716デフォルトの名無しさん
2005/08/26(金) 20:10:000717デフォルトの名無しさん
2005/08/26(金) 20:11:40CP_OEMCPとCP_ACPの違いを教えてください。
ANSIコードページとOEMコードページということですが、
調べてもいまいちよく理解できません。
0718デフォルトの名無しさん
2005/08/26(金) 20:15:40マルチバイト文字が扱えなかったら糞だろう
0719デフォルトの名無しさん
2005/08/26(金) 20:21:570720デフォルトの名無しさん
2005/08/26(金) 20:57:46自虐しちゃダメよ?
0721デフォルトの名無しさん
2005/08/26(金) 21:13:03XPビジュアルスタイルを適用してCEditを使用しています。
そこで日本語を入力して再変換を行うと文字が化けます。
・ATOCKでは発生しません。
・コンテキストメニューから再変換を選択しても発生しません。
_UNICODEを宣言しないで回避する方法ってありますか?
0722デフォルトの名無しさん
2005/08/26(金) 21:29:44WindowsのAPIにCEditなんてないお(;^ω^)
0723デフォルトの名無しさん
2005/08/26(金) 21:32:440724721
2005/08/26(金) 21:34:05;y=-( ゚д゚)・∵ターン
0725MathC ◆Ho9erQuSOQ
2005/08/26(金) 23:40:32なにぶん、貧乏学生なもので>>1-4に書かれている書籍はとてもじゃありませんが手が出せそうにありません。
初めのほうに書いてある「猫でもわかるWindowsプログラミング」というサイトと「Win32 API入門」を訪れたのですが、
後者のほうは次から次へと専門用語が出てきて困っています。
前者のサイトから学びたいと思うのですが理論的な解説なしに学ぶのは自殺行為でしょうか?
0726デフォルトの名無しさん
2005/08/26(金) 23:43:12雰囲気がつかめれば理論(?)も理解しやすい。
0727デフォルトの名無しさん
2005/08/26(金) 23:48:18どうでもいいことに金使わんと、必要なものにまず使えよ
0728デフォルトの名無しさん
2005/08/26(金) 23:50:580729デフォルトの名無しさん
2005/08/26(金) 23:53:090730デフォルトの名無しさん
2005/08/26(金) 23:53:59Win32 API入門も専門用語の羅列は 1. Win32 APIとは だけだと思うけど。
0731MathC ◆Ho9erQuSOQ
2005/08/27(土) 00:04:15沢山のレスありがとうございます。
Advanced Windows は切り詰めながら買いたいと思います。
それまでは「猫でもわかる.....」で頑張ります。
0732デフォルトの名無しさん
2005/08/27(土) 00:29:37Advanced Windowsは、調べても調べても手元の資料には答えが
見つからなくなったときでいいとオモタ。
0733デフォルトの名無しさん
2005/08/27(土) 00:29:56俺もC終わってWin32APIの勉強してるが、推薦図書スレの
VisualC++の1読んでるがわかりやすいと思った
0734デフォルトの名無しさん
2005/08/27(土) 00:54:035千オーバーの本を何冊も買うのは学生には辛い
0735デフォルトの名無しさん
2005/08/27(土) 01:03:140736デフォルトの名無しさん
2005/08/27(土) 01:28:59とりあえずPlatformSDK入れてサンプル「Generic」のソース読んで理解。
それができたら改造してみる。
このあたりから初めてみれ。
0737デフォルトの名無しさん
2005/08/27(土) 01:52:11その「C終わって」っつのはいったい何だ。
0738デフォルトの名無しさん
2005/08/27(土) 02:02:560739135
2005/08/27(土) 05:56:14コンソールアプリは確かにそれでいいんですが・・・
>>137
Win98では、system("echo \a")でちゃんとDOS窓が出現してビープ音が出ます。
CreateProcessA(NULL, "command.com /cecho \a", &sa, &sa, ...);
などとしても鳴ります。
私は、単なるビープ音だけではなく、例えばユーザー補助でマウスキーを設定していると、NumLockで有効になる時と無効になる時で周波数が変わっていて音で識別できるようになっている、とかそういう面白いこともやりたいわけですが・・・
例えばDeviceIoControl()なんかに特別なデバイスを指定したりとか、マルチメディア系のインターフェースでビープ音を扱える、とかはないですかね・・・? DOS時代にはビープ音で演奏するソフトが色々ありましたが・・・
なお、Win2000も使ってみました。確かにsystem("\a");でビープ音、出ますね・・・「''は内部コマンドまたは外部コマンド、操作可能な・・・」というエラーメッセージも一瞬出ますが・・・
それで
CreateProcesA(NULL, "command.com /cecho \a", &sa, &sa, ...);
はWin2000では音が鳴りません。
CreateProcesA(NULL, "cmd.exe /cecho \a", &sa, &sa, ...);
にすると音が鳴ります。
残念なのは、Win2000(のWin32)ではI/Oポートがすべてマスクされ、しかもシミュレートもない、ということですね・・・Win98では61hはアンマスクになってたりしますし、マスクされたポートも適当にシミュレートしてくれますね。スルーされるだけだったりしますが・・・
なお、MessageBeep(-1)ですが、Win98では確かに極めて短いビープ音(ボツッというような音)が鳴るのですが、Win2000ではサウンドカードからの音(MB_OKと同じ音)ですね。MSDNにはビープ音だと書いてあるのに、やはりウソが書いてあるのか・・・orz
NT3.1とかではビープ音だったんですかね?
0740デフォルトの名無しさん
2005/08/27(土) 07:04:31そもそもハード的にM/Bのスピーカは周波数とか変えられるんだろか…
0741デフォルトの名無しさん
2005/08/27(土) 08:16:06行間の幅を変えるにはどうすればいいですか?
0742デフォルトの名無しさん
2005/08/27(土) 08:26:44あっはっは。面白いこというなぁ。
昔はBEEPでBGMとか当たり前だし、
BEEPを通常のサウンドデバイスとしてあつかうドライバもあるのに。
0743デフォルトの名無しさん
2005/08/27(土) 08:39:00今後製造されるM/Bでもスピーカの周波数が変えられることは保証されてるのか?
0744デフォルトの名無しさん
2005/08/27(土) 08:46:55結果に対して仮定を持ち出す
そいつは詭弁という奴ですよ〜
0746デフォルトの名無しさん
2005/08/27(土) 09:04:46アナクロな技術を使うならば、単音単一周波数単一音量でもパルス制御すれば三重奏に聞こえる程度の音は作れる。
>>739
目的がよく判らんのだが、自分の端末だけでやりたいのか、他人も同じ目に遭わせたいのかその辺りは?
それから、サウンド機能を使わずにビープだけでやりたいと言う理由もよく判らんな。
0747デフォルトの名無しさん
2005/08/27(土) 09:32:24つか、MessageBeep()でもまえの要求は完全に満たしてるじゃん。
・サウンドカードから音を出したい
・状況によって音を変えたい
何を前スレからうだうだ気にしてるんだ?
あとM/BのBEEP全然関係ないし。
0748デフォルトの名無しさん
2005/08/27(土) 09:37:28流れがよーわからん(スレ境界またいでるの追う気力がない)が
PlaySound じゃあかんのか?
0749
2005/08/27(土) 09:44:210750デフォルトの名無しさん
2005/08/27(土) 10:20:12むかーし、リレースイッチ?の「カチ」っていう音で
サンプラーっていうのもあったなあ。
0751デフォルトの名無しさん
2005/08/27(土) 10:24:370752デフォルトの名無しさん
2005/08/27(土) 10:43:190753デフォルトの名無しさん
2005/08/27(土) 11:32:31速くスイッチングするとカチカチじゃなく、ブーンからピーンと発信音がする罠。
0754デフォルトの名無しさん
2005/08/27(土) 11:49:240755デフォルトの名無しさん
2005/08/27(土) 11:53:230756デフォルトの名無しさん
2005/08/27(土) 15:12:45学生なら図書館行くとか
割と置いてあったりするし
なんなら図書館に仕入れてもらうとか
0757デフォルトの名無しさん
2005/08/27(土) 18:52:49がループして困っているのですが
WM_CREATEってCreateWindowしたとき以外発生しませんよね?
0758デフォルトの名無しさん
2005/08/27(土) 19:04:57関数内にループが無いんなら、その関数呼び出すとこがループになってんじゃねーのか?
0759デフォルトの名無しさん
2005/08/27(土) 19:05:15The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function.
0760デフォルトの名無しさん
2005/08/27(土) 19:07:09メッセージループの書き方が悪いんじゃ?
0761デフォルトの名無しさん
2005/08/27(土) 19:19:380762プロシージャ
2005/08/27(土) 19:26:44(
HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
)
{
PAINTSTRUCT ps;
HDC hdc;
switch(uMsg)
{
case WM_DESTROY:
ResetInformationString();
PostQuitMessage(0);
return 0;
case WM_CREATE:
IniInformationString();
SetInformationStringMax(20);
CreateEditLine(hWnd,wParam,lParam); //ループしている関数
return 0;
略
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
0763ループしている関数
2005/08/27(土) 19:29:08{
h_edit = CreateWindow
(
APP_NAME ,NULL,
WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT,
16, 450, 560, 20,
hWnd,NULL, ((LPCREATESTRUCT)lParam)->hInstance , NULL
);
if(h_edit == NULL)
{
InsertInformationString("Editline create failed");
return;
}
edit_proc = (WNDPROC)SetWindowLong(h_edit,GWL_WNDPROC,(LPARAM)EditProc);
InsertInformationString("Chatting editline create Success!");
}
0764デフォルトの名無しさん
2005/08/27(土) 19:34:37APP_NAMEが指定されてるんじゃなかろうか…
0765デフォルトの名無しさん
2005/08/27(土) 19:34:39>763が子ウインドウを作成する関数です。
SetWindowLongでプロシージャも専用のものに切り替えてるはずなんですが;
0766デフォルトの名無しさん
2005/08/27(土) 19:37:24WM_CREATE は SetWindowLong でプロシージャ切り替える前に送られるよ。
0767デフォルトの名無しさん
2005/08/27(土) 19:38:12APP_NAMEになってました・・・・・・orz
修正したら正常に動作しました
>758-766お騒がせしてすみません;
0768デフォルトの名無しさん
2005/08/27(土) 19:40:190769デフォルトの名無しさん
2005/08/28(日) 14:53:20キーボードから入力しても文字列が表示されなくて(aaaと打っても空白のまま)困っています。
CreateWindow("EDIT","",
WS_CHILD|WS_VISIBLE,
10,10,300,20,
hwnd,
(HMENU)1,
hInstance,
NULL);
落としたサンプルそのままで使ってるんですが、別のものが影響したりするんでしょうか?
0770デフォルトの名無しさん
2005/08/28(日) 16:18:240771デフォルトの名無しさん
2005/08/28(日) 16:19:470772デフォルトの名無しさん
2005/08/28(日) 17:23:260773デフォルトの名無しさん
2005/08/28(日) 18:55:49リストボックスの合体だな。spy++で覗くと良いだろう。
0774デフォルトの名無しさん
2005/08/29(月) 01:49:32漢字入力を始めたときに飛んでくるWM_IME_STARTCOMPOSITIONなどを
監視して、以下のようなソフトを作りたいと思っています。
�@ワード文書内において、
�AIME入力、言い換えれば漢字入力を開始すると、
�B入力された文字が確定されるまで、
�C背景を薄いブルーにする、
というものです。
すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
�@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。
【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。
【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
0775デフォルトの名無しさん
2005/08/29(月) 02:08:16ここまで読んだ。そして、その後の文章を読む気力が無くなった。
0776デフォルトの名無しさん
2005/08/29(月) 02:11:30これらのクラスから派生クラスを作ってはみるものの、
WndProcなるメソッドをインテリコンボボックス(?)から
見つけ出すことはできませんでした。
0777774
2005/08/29(月) 02:12:37丸rz。。。
そんなことおっしゃらずに、お願いします(T_T)
0778デフォルトの名無しさん
2005/08/29(月) 07:00:59スレ違いだ
0779デフォルトの名無しさん
2005/08/29(月) 09:23:29キャプションをウィンドウタイトルバーのキャプションとは違うものにする方法は
ないでしょうか。
googleで、タスクバー、アイコン、キャプション、タイトル、テキスト、操作、設定、api
などのキーワードで検索してみましたが見つかりませんでした。
0780デフォルトの名無しさん
2005/08/29(月) 09:36:39MSDN Libraryみてみたが無かった
ってか無理なんじゃね?その辺の制御はWindowsのシェルがやってる希ガス
0781デフォルトの名無しさん
2005/08/29(月) 09:55:54メインウィンドウを非表示にして、メインじゃないウィンドウのタイトルを
好きに変更汁。
0782デフォルトの名無しさん
2005/08/29(月) 10:33:40クラス名としてどのようなものがよいでしょうか?
0783デフォルトの名無しさん
2005/08/29(月) 10:35:020784デフォルトの名無しさん
2005/08/29(月) 10:44:18ラップする機能単位にクラス化しろ
0785デフォルトの名無しさん
2005/08/29(月) 11:06:19レスありがとうございます。
書き込みしてからさらに情報を探しているうちに、Delphiで作られたアプリが
>779で書いたようなことを実現していたことを思い出しました。
で"Delphi"もキーワードに加えて検索したところ、>781さんも書いている、
タスクバーアイコンを非表示にしたウィンドウとデスクトップ外に表示した
ウィンドウの2つのウィンドウを使って1つのウィンドウに見せかける(Delphi
ではこれがデフォルト?)、というやり方を見つけました。
ポイントとしてはSetWindowLongあたりでスタイルを変えるというめどは
つきましたが、使っている言語がHSPなのでうまくいくかどうか不安です。
ではとりあえず消えます。ありがとうございました。
0786デフォルトの名無しさん
2005/08/29(月) 11:18:38悪いこと言わんからDelphiなりVC#にでも開発環境変えれ。
HSPはHSPの提供してる機能以上のことやると他の環境以上に手間がかかる。
0787デフォルトの名無しさん
2005/08/29(月) 11:32:560788デフォルトの名無しさん
2005/08/29(月) 11:54:240789デフォルトの名無しさん
2005/08/29(月) 13:26:56windowsの起動時に「ctrl+alt+delキーを押して開始してください画面」から、
「ctrl+alt+del」→「任意のユーザー名、パスワード、ドメイン名にてログオン」
ということが、外部PCからの制御でしたいのですが、なかなか出来ません。
まずは簡単なサービスを作ってウィンドの挙列をして、
強引にプログラムから入力してみようとしてみましたが、
普通のウィンドウではないらしく、setwindowtextなど出来ませんでした。
いずれにしてもサービスで外部からのコマンド等を受信してからの
作業になると思いますが、どのように進めて行けば良いのでしょうか?
ご存じの方、よろしくお願いします。
0790デフォルトの名無しさん
2005/08/29(月) 13:44:10GINAでググれば糸口が掴めるやも
0791デフォルトの名無しさん
2005/08/29(月) 13:52:57実は以前GINAを調べていたのですが、
結構ハイリスクだったので諦めた経緯があります。
何か姑息な手段でも良いのですが他に方法なないでしょうか。
それともはやりGINA必須でしょうか。
0792デフォルトの名無しさん
2005/08/29(月) 14:19:230793デフォルトの名無しさん
2005/08/29(月) 14:47:570794793
2005/08/29(月) 14:48:330795デフォルトの名無しさん
2005/08/29(月) 14:57:220796デフォルトの名無しさん
2005/08/29(月) 15:29:52>>789は外部から対話ログインしてその後どうするつもり?
全部SendMessageとかで他プログラム制御するのか?
0797717
2005/08/29(月) 16:00:200798デフォルトの名無しさん
2005/08/29(月) 16:53:16外部から対話ログインしたいのではなく、
外部からの制御でctrl+alt+del→ユーザー名パスワード、ドメイン名の入力を
済ませたいのです。
例えばカードリーダーや指紋認証等と232C等で通信して、
ログインするユーザーやドメインを変えたいということです。
「ctrl+alt+delキーを押して開始してください画面」
の状態のパソコンを上記の操作で自動的に任意のユーザーでログオンさせたいのです。
よろしくお願いします。
0799デフォルトの名無しさん
2005/08/29(月) 17:02:39そういうAPIは用意されてますか?
今はグローバル変数の配列にtid毎にポインタを割り当てているのですが、
これだとアクセスする度に検索しなくてはならないので非常に遅くなります。
ご教示お願いします。
0800デフォルトの名無しさん
2005/08/29(月) 17:11:45TlsAlloc、TlsGetValue、TlsSetValue
この辺か?
0801デフォルトの名無しさん
2005/08/29(月) 17:17:270802デフォルトの名無しさん
2005/08/29(月) 17:31:41ありがとうございました。まさにソレです。
0803デフォルトの名無しさん
2005/08/29(月) 18:07:03不覚にもツボに入った。
0804デフォルトの名無しさん
2005/08/29(月) 20:03:32スマートカード認証ならますます素直にGINAを使えって話になるが
0805デフォルトの名無しさん
2005/08/29(月) 20:22:17まあThinkPadの指紋認証みたいなポカ作り込まないように気を付けてがんばれ。
0806デフォルトの名無しさん
2005/08/29(月) 20:37:27よーするに COM か?
0807デフォルトの名無しさん
2005/08/29(月) 21:05:04COMについて理解が足りてない予感。
0808デフォルトの名無しさん
2005/08/29(月) 21:20:40ドライバとのインターフェイスに限定して考えてるか?
0809デフォルトの名無しさん
2005/08/29(月) 21:40:52現在のプロセス、かつ、現在のプロセスで作成された全てのスレッドに対してフックできますか?
0810デフォルトの名無しさん
2005/08/29(月) 22:06:400811デフォルトの名無しさん
2005/08/29(月) 23:16:07何かの状態変化の時に呼び出されるコールバック関数の様なものの固まりに見えます。
実際、「ctrl+alt+delキーを押して開始してください画面」
の状態の時、外部(232C等)からの情報は何処で受け取って、
受け取ったあと、どのように処理すれば良いのかわかりません。
LogonUserとかでtokenを取得し、その後デスクトップの処理する事になるのかな。
それならGINAとかあまり関係なさそうだし。
どうGINAと絡めばいいのでしょう...
おわかりの方、よろしくお願いします。
0812デフォルトの名無しさん
2005/08/30(火) 03:59:40そこで「カードをかざせ」みたいなダイアログだして
シリアルポートからカード情報読んで
簡単なつくりにするなら、
カード情報と認証情報結び付けといて
その認証情報でLogonUser
でプロファイル読んだりしてシェル立ち上げておしまい
0813デフォルトの名無しさん
2005/08/30(火) 05:27:310814デフォルトの名無しさん
2005/08/30(火) 08:21:130815789
2005/08/30(火) 08:51:15情報、ありがとうございます。
>ctrl+alt+delキー押されたとき呼ばれる関数があるやろ
はい。ありますよね。
しかし、私が思っているのはその前の
「ctrl+alt+delキーを押して開始してください画面」
の時点、つまりパソコンの電源を入れて上記画面で止まっている状態から
外部機器からの操作でログイン→デスクトップ表示まで行きたいです。
ctrl+alt+delの操作を省きたいのです。(が、表示は普通に出しておきたい。)
そこで思ったのは、もしかすると私のやりたいことはGINAに直接関係なく、
少なくともWlxから始まる関数の処理はしないでも、
上記「ctrl+alt+delを押して...」の時点で、
サービスによりLogonUserでtokenを取得し、
812氏の仰る「プロファイル読んだりしてシェル立ち上げておしまい 」
なのではないかと思ったのですが、
「プロファイル読んだりしてシェル立ち上げておしまい 」
の方法が今のところわからず、試せずにいます。
なにか情報が有れば、引き続きよろしくお願いします。
0816デフォルトの名無しさん
2005/08/30(火) 09:49:51GINAやWinLogonのことはよく知らないけど横レス。
つまりWinLogon.exeの知らないところで自前のプロセスで
対話ログオンを行うというアイディア?
それでシェルが上がったとしてもちゃんと動くのかなー?
勉強で作りたいならいいけど動作保証が必要な仕事なら
その方法はキツいような臭いがする。
検討するにしても789の理解では難しいような気がするよ。
> プロファイル読んだり
LoadUserProfile
> シェル立ち上げて
HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
のShellに書いてるのを上げる。userinitが先かな。
デスクトップ作ったり(切り替えだけかも)しないとアカンような気もする。
0817816
2005/08/30(火) 09:57:32>>816
> HKLM¥SOFTWARE¥Microsoft¥Windows NT¥CurrentVersion¥Winlogon
HKCUにもあったような気がした。
0818789
2005/08/30(火) 10:26:53>WinLogon.exeの知らないところで
なるほど。
確かにOSが管理出来なくなる様な事になりそうではありますね。
う〜む。しかし、GINAとなるとどの時点で外部からの制御を処理すれば良いのか...
もう少し探ってみます。
よろしくお願いします。
0819816
2005/08/30(火) 12:17:17> GINAとなるとどの時点で外部からの制御を処理すれば良いのか...
よくわからないので間違ってるかもしれないけど。
初期化時とかにスレッドなりウィンドウなり作ってそこで通知を
待つとかポーリングとかすればいいんじゃない?
で、来たらWlxSasNotify呼ぶのかな?
とにかくWlxSasNotify呼んでるサンプルを見つければいいような
気もする。
0820Omoti
2005/08/30(火) 13:41:220821Omoti
2005/08/30(火) 13:49:41目的の動作は、
「WEBブラウザーを起動して、こちらの指定のURLを表示する」
という、シンプルなものです。
ただ、起動するブラウザーのウインドウの数は、1個だけに制限するという仕様です
(いくつもウインドウが立ち上がるとメモリが足りなくなるため)
shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'http://www.google.co.jp/', 0, 0, 1)
このコードを実行すると、パソコンにゾーンアラームなどファイヤーウオールがはいっていると、
「RGSSというプログラムがネットに接続しようとしているが、許可するか?」
とでてきて、
「許可する」
を押すのですが、そのあとすぐに
「スクリプトがハングアップしました」
となってRGSSが強制終了してしまいます。
RGSSはrubyを元にして作った言語ですので、rubyのメーリングリストでも聞いてみましたが
「どうもRGSSのバグではないか」
という話になってますが、win32apiの立場から見て、どう思いますか。
0822あぼ〜ん
2005/08/30(火) 13:50:180823デフォルトの名無しさん
2005/08/30(火) 14:02:43RGSSの言語仕様知らんから、ShellExecuteの引数だけ確認したが問題ないと思う
RGSSのバグじゃまいか?
0824デフォルトの名無しさん
2005/08/30(火) 15:04:55Cで書いたShellExecuteを呼ぶだけのプログラムでも、
なぜかそのプログラムがZoneAlarmにトラップされ一時停止するしな。
RGSS的にはShellExecuteから戻ってこない→ハングアップしますた。で問題ないと思うが。
0825デフォルトの名無しさん
2005/08/30(火) 15:18:35Ctrl+TabでIEをアクティブにするといきなり開くんだけど。
0826デフォルトの名無しさん
2005/08/30(火) 15:19:11FWに捕まったときの話なのか?それなら>>824だと思う
0827デフォルトの名無しさん
2005/08/30(火) 17:01:21セキュリティポリシーでctrl+alt+delキー不要にしたらダイアログ勝手に出てくるから
そのダイアログでシリアルポートポーリングするのは駄目か?
これもGINA変更が必要だけどそれ以外思いつきません。
0828デフォルトの名無しさん
2005/08/30(火) 19:08:30監視して、以下のようなソフトを作りたいと思っています。
�@ワード文書内において、
�AIME入力、言い換えれば漢字入力を開始すると、
�B入力された文字が確定されるまで、
�C背景を薄いブルーにする、
というものです。
すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
�@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。
【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。
【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
0829デフォルトの名無しさん
2005/08/30(火) 20:33:20DLL使ってフックしたりするしかないのではないかなぁ。
本質的には外のWORDを乗っ取るのと同じ事だから。
0830789
2005/08/30(火) 20:40:28>>827
仰られるあたりを踏まえて
色々やってみます。
ありがとうございます。
少し時間がかかると思いますが、
何かわかればまた報告に来ます。
0831デフォルトの名無しさん
2005/08/30(火) 20:53:57IEのようにちらつかないようにするにはどうすればいいのでしょうか?
よろしくお願いします。
0832デフォルトの名無しさん
2005/08/30(火) 21:01:400833831
2005/08/30(火) 21:44:55今、最新のWTLのソースコードをGETして、何かサンプルアプリをビルドしてみましたが、
リバーのグリップが、ちらちきますね。
IEだと、まったくちらつかないんですよ。
たぶん、何か技があるとおもうのですが、ご存知な方はいらっしゃいませんか?
是非教えていただきたいと思いますが。
0834デフォルトの名無しさん
2005/08/30(火) 21:45:54(正)リバーのグリップが、ちらつきますね。
0835デフォルトの名無しさん
2005/08/30(火) 22:53:120836831
2005/08/30(火) 23:05:49僕が試したWTLは、ピュアなものですから。
0837デフォルトの名無しさん
2005/08/30(火) 23:29:360838デフォルトの名無しさん
2005/08/31(水) 01:28:52HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
にキー作って、タイトルとパラメータ入れるトコまでは解ったのですが、
アプリケーションサイズはどのように設定するのでしょうか?
0839Omoti
2005/08/31(水) 01:47:22ハーフライフとか、市販のゲームでネットにはじめて接続しようとしたときに、
当然ゾーンアラームで検知されて、
「ハーフライフというゲームがネットに接続しようとしているが、許可するか?」
という、同じようなダイアログがでてきます。
でも、そのあいだ、ハーフライフはずーーとおとなしく「おあづけ」状態でおとなしく待っていて、
ゾーンアラームの「許可」のボタンを押した後に、何事もなかったように素直にゲームに復帰できます。
ところがRGSSはいったんゾーンアラームに処理が移ると、それでゲームごと強制終了してしまうんです。
スクリーンショットは画像はこんな感じです。
http://www.net24.ne.jp/~omoti/game-link/hangu-up.html
0840デフォルトの名無しさん
2005/08/31(水) 02:37:150841Omoti
2005/08/31(水) 02:39:43そりゃーなんの問題もおこりませんよ
だれにもとめられないんですから
0842デフォルトの名無しさん
2005/08/31(水) 05:56:540843Omoti
2005/08/31(水) 06:52:32それはちがうとおもいます
ネット上のURLを拾いに行かないで、
パソコン内のローカルなHTMLファイルを参照しながら
IEを起動するようにしたら、ゾーンアラームで検知しないので
IEが起動して、その起動したあとに、ネット上のURLを表示する
ようにしたら、そこではじめてゾーンアラームが検知して
「許可するか?」
という、ダイアログを出してきますけど、そこで
「ゆっくりと」
時間をかけて「許可する」のボタンをおしても
なんの問題もおこりません
つまり、「許可する」のボタンをおしたら、そのままゲームにもどって
プレイを続行できます。
0844Omoti
2005/08/31(水) 06:56:14>ネット上のURLを拾いに行かないで、
>パソコン内のローカルなHTMLファイルを参照しながら
>IEを起動する
これは具体的には、「readme.html」のようなファイルを別途、つくっておいて、
ゲームのフォルダの中につっこんでおいて、この「readme.html」を開くという
スクリプトを第一段階目で組んで実行するわけです
shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'readme.html', 0, 0, 1)
こういうふうに。そうすると、readme.htmlを読み込みながらIEが起動して、
IEのウインドウが開いたままの状態で今度は
shellexecute = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
shellexecute.call(0, 'open', 'http://www.google.co.jp/', 0, 0, 1)
を実行します。するとすでにIEは開いているので、それ以上、わざわざIEを
開くという作業はなしで、いきなりhttp://www.google.co.jp/を既存のIEのウインドウで
開こうとして、ここでゾーンアラームが検知をしまして
「許可するか?」
という、ダイアログを出してきて、「許可する」を押すと、
そのまま何も問題なく、ゲームが続行できます。
0845Omoti
2005/08/31(水) 07:07:09IEの
ツールTの中の、
インターネットオプションOの中の、
詳細設定の中の、
ブラウズの中の、
ショートカットを起動するためにウインドウを再利用する
の、チェックがどうなっているか、取得する方法はありますか?
0846デフォルトの名無しさん
2005/08/31(水) 07:42:580847デフォルトの名無しさん
2005/08/31(水) 08:45:32HKCU\Software\Microsoft\Internet Explorer\Main\AllowWindowReuse
辺りじゃないか?
0848Omoti
2005/08/31(水) 10:28:35それってWin32apiの立場から、見えるんですか?
0849デフォルトの名無しさん
2005/08/31(水) 10:33:08Win32APIにレジストリの読み書きをする関数がないなんてありえない。
0850Omoti
2005/08/31(水) 11:10:32ということは、Win32apiをいじれるということは、
レジストリの読み書きもできると?
0851Omoti
2005/08/31(水) 11:11:330852Omoti
2005/08/31(水) 11:12:46読んだり
書いたり
変更したり
できると、何かおもしろいことができる?
0853デフォルトの名無しさん
2005/08/31(水) 11:27:45だからWin32APIの中にはレジストリを読み書きする関数が存在する。
じゃなきゃ俺達どうやってレジストリを扱えばいい。
0854デフォルトの名無しさん
2005/08/31(水) 12:32:260855デフォルトの名無しさん
2005/08/31(水) 12:48:310856デフォルトの名無しさん
2005/08/31(水) 12:49:070857デフォルトの名無しさん
2005/08/31(水) 13:24:30パスの指定ってどうやるの?
0858デフォルトの名無しさん
2005/08/31(水) 14:36:34文字列とパラメータ入れたら、ビットマップ配列が得られるような。
0859デフォルトの名無しさん
2005/08/31(水) 14:43:41そのままズバリのAPIはなかったと思う
CreateDIBSectionでHBITMAP作って、
それを関連付けたDCに文字列描画したら、
それと同じようなことが出来るんでない?
0860デフォルトの名無しさん
2005/08/31(水) 14:43:47GetGlyphOutline()
単純に、メモリDCに書けばいいという気もするが。
0861859
2005/08/31(水) 14:45:150862デフォルトの名無しさん
2005/08/31(水) 14:48:14そんぐらい作りなよ。
0863デフォルトの名無しさん
2005/08/31(水) 14:54:410864858
2005/08/31(水) 15:01:02そうか、DC使えばできるのか。
DCの実体というか、画素配列にダイレクトにタッチしたことないから
すっかり意識の外でした。
>>859
おお、なるほど
>>860
そうですね
>>862
そうします。
0866デフォルトの名無しさん
2005/08/31(水) 17:02:07C# のコードから開きたいのですが…
0867デフォルトの名無しさん
2005/08/31(水) 17:15:540868866
2005/08/31(水) 17:42:030869828
2005/08/31(水) 19:37:48ご返答まことにありがとうございます。
そうですかぁ、WordObjectLibraryから検知するのは
難しいんですかぁ。
ならば、質問を変更させていただき、
Wordで未確定文字があるかないかを検知可能な手段は
ないでしょうか・・・??
なんていかがでしょうか。
僕もいろいろググってるんですけど、なかなか有益な情報に
たどり着けないで降ります。
よろしくお願いします。
0870デフォルトの名無しさん
2005/08/31(水) 19:45:480871デフォルトの名無しさん
2005/08/31(水) 20:42:42telnetを切断しても常駐させるにはどのようにしたらよいですか?
win2000 → win2000
0872デフォルトの名無しさん
2005/08/31(水) 20:46:15非難するにも論点を間違えてると大だらずにしか見えんけ
0873デフォルトの名無しさん
2005/08/31(水) 20:58:180874828
2005/08/31(水) 21:07:08正直、どっちに投稿すればいいのかわからないんです。
すみません。
0875デフォルトの名無しさん
2005/08/31(水) 21:11:06やっぱり大だらずか・・・
0876デフォルトの名無しさん
2005/08/31(水) 21:33:51>>871
win同士じゃ無理かと
0877デフォルトの名無しさん
2005/08/31(水) 21:37:480878デフォルトの名無しさん
2005/08/31(水) 21:40:100879デフォルトの名無しさん
2005/08/31(水) 21:52:39OK
ノンプリエンプティブの範疇で論じることができる
0880デフォルトの名無しさん
2005/08/31(水) 21:54:02を親ウィンドウで受け取りたいのですが、どうすればいいんでしょうか。
EndDialog()では、int型しか返り値にできないみたいなんですが。
0881デフォルトの名無しさん
2005/08/31(水) 21:57:32EndDialogより前にSendMessage()やその他何らかの方法で親ウィンドウへ文字列を送ればいい。
あるいはアトム化すればEndDialog()で返すこともできるね。一般的な方法ではないだろうけど。
0882828
2005/08/31(水) 22:07:32CViewWindow.Opener().Show();
0883デフォルトの名無しさん
2005/08/31(水) 22:36:14親ウィンドウのハンドルが取得できなくて困っています。
DialogBox()で指定してGetParent(ダイアログのハンドル)とやっても
失敗してしまいます。
0884デフォルトの名無しさん
2005/08/31(水) 22:37:26誤爆か?
0885デフォルトの名無しさん
2005/08/31(水) 22:40:10変数に入れたらアカンの?
0888デフォルトの名無しさん
2005/08/31(水) 23:56:20「Ctrl+Alt+Delを押せ」のダイアログはwinlogonが勝手に出してるわけじゃなくて、
WlxDisplaySASNoticeを呼び出してGINAに処理させている。
当然これはCtrl+Alt+Delを押す「前」に呼ばれるから、そこでダイアログを表示して
カードの挿入を検出したらWlxSasNotifyを呼ぶようにすればCtrl+Alt+Delを押さなくても
先に進める。もっと詳しくはこの記事でも読め
http://msdn.microsoft.com/msdnmag/issues/05/05/SecurityBriefs/
0889デフォルトの名無しさん
2005/09/01(木) 04:32:38某IT用語辞典によれば、リソースを割り当ててその優先順位がなんとら・・で
ああだからコンソールアプリはディスパッチが必要なかったのか程度しか理解できません。
誰か俺でもわかるようにお願いしますorz
0890デフォルトの名無しさん
2005/09/01(木) 04:43:360891デフォルトの名無しさん
2005/09/01(木) 11:38:14複数インストールする場合(ローカルフック)、フックハンドルの
保存の仕方で良い定石みたいなのがあるんでしょうか?
普通にstatic変数で保存すると結構な数になってしまうもので…
0892デフォルトの名無しさん
2005/09/01(木) 15:36:36馬鹿にしないでください。それでわかるくらいなら質問しません。
0893デフォルトの名無しさん
2005/09/01(木) 18:31:55説明が下手でごめんなさいっ!
0894デフォルトの名無しさん
2005/09/01(木) 18:33:260895デフォルトの名無しさん
2005/09/01(木) 19:25:38いわゆるスレッドを作るときの関数指定と同じ事なんですね。
浅学ってのは無知と実感しますた('A`)..
0896デフォルトの名無しさん
2005/09/01(木) 19:26:100897デフォルトの名無しさん
2005/09/01(木) 20:10:31そりゃそうだろと
0898デフォルトの名無しさん
2005/09/01(木) 22:51:54深学するのは、オタクだけ。
0899デフォルトの名無しさん
2005/09/01(木) 22:53:08浅学は無知→浅学は罪と書きたかったんだorz
0900デフォルトの名無しさん
2005/09/01(木) 23:34:00SetProp
0901デフォルトの名無しさん
2005/09/02(金) 01:33:360902891
2005/09/02(金) 14:34:320903デフォルトの名無しさん
2005/09/02(金) 18:07:22WindowsXP
C言語
BCC+BCCDeveloperでやっております。
char DataA[50];
char *DataB=(char *)malloc(50);
という二つのバッファを用意して
ReadFile()の第二引数に指定すると、DataBでは上手くファイルの内容を格納できるのですが
DataAではReadFile();関数は失敗し、GerLastError()でのエラーメッセージは
「メモリロケーションへのアクセスが無効です」となります。
この違いはなんなのでしょうか。よろしくお願いします
0904デフォルトの名無しさん
2005/09/02(金) 18:14:31常駐することなしにこれを実現したいのですが、どのようにしたらいいでしょうか。
よろしくお願いします。
0906デフォルトの名無しさん
2005/09/02(金) 18:37:48よくわからんが、↓の関係じゃねーの?
>読み書き操作用のバッファのアドレス(メモリ内のアドレス)を、ボリュームのセクタサイズの整数倍に整列(セクタ整列)させなければなりません。
0907デフォルトの名無しさん
2005/09/02(金) 18:41:56ReadFileにそんな必要無い
0908904
2005/09/02(金) 18:45:07浴び馬レベルでしたかorz すみません。
ただ、休止状態からの復帰なので、スタートアップやレジストリなどに書いても駄目でした。
何かヒントください(クレクレですみません)
0909デフォルトの名無しさん
2005/09/02(金) 18:51:130910デフォルトの名無しさん
2005/09/02(金) 18:56:39不可能。
0911デフォルトの名無しさん
2005/09/02(金) 19:07:58そういわれてもMSDNにはそう書いてあるが
0912デフォルトの名無しさん
2005/09/02(金) 19:09:45プ
0913デフォルトの名無しさん
2005/09/02(金) 19:12:300914デフォルトの名無しさん
2005/09/02(金) 19:12:59PBT_APMRESUMESUSPENDメッセージかな?
The PBT_APMRESUMESUSPEND event is broadcast as a notification
that the system has resumed operation after being suspended.
A window receives this event through the WM_POWERBROADCAST
message. The wParam and lParam parameters are set as described following.
繰り返すけど、常駐プログラムなしに検出するのは不可能。
ただ、レジュームを検出する常駐プログラム自体はメモリ、CPU使用率の面で羽のように軽くすることはいくらでもできる。
検出する以外なにもしないプログラムをかけばいいだけ。
レジュームイベントを検出したら、何らかの方法で実行したいプログラムを外部から動的に呼び出す。
呼び出す手法は、
簡単なのではShellExecuteでexeファイルをキック。
あるいはDllで実装したのを呼び出す。
COMを使ってコンポーネントとして実装したのを呼び出す。など
0915デフォルトの名無しさん
2005/09/02(金) 19:13:010916デフォルトの名無しさん
2005/09/02(金) 19:16:47>FILE_FLAG_NO_BUFFERING フラグを指定してファイルを開いた後、
>そのファイルの作業を行う場合、アプリケーションは次の各要件を満たさなければなりません。
まぁ、質問者がこのフラグを指定しちゃってる可能性もゼロじゃないけどさ・・・
0917>>903
2005/09/02(金) 19:28:37ありがとうございます。色々試していました。が、やはりできません。
FILE_FLAG_NO_BUFFERINGは指定していないです。
char DataA[32000];
hFile=CreateFile(
"a.txt",//ハンドルを得るファイル名
GENERIC_READ,//読み取りアクセス
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
ReadFile(
hFile,//内容を読み取るファイルのハンドル
DataA,//読み込んだ内容を格納するバッファ
32000,//読み込むバイト数
&readsize,//読み込んだバイト数を格納する
NULL
)
という感じです、遅れてすいません
0918デフォルトの名無しさん
2005/09/02(金) 19:30:29すまない、見落としてた・・・
0919デフォルトの名無しさん
2005/09/02(金) 19:36:35あ、わかった。
char DataA[32000];
↑これが原因。
スタックメモリにはこんなにたくさん確保できないんでしょう。
ヒープにしなきゃだめ。
0920デフォルトの名無しさん
2005/09/02(金) 19:38:19ためしに、
char DataA[32000];
for (int i=0;i < 32000;i++)
DataA[i] = 0;
てやってみ。
アクセスエラーでるから。
0921デフォルトの名無しさん
2005/09/02(金) 19:39:25>>917
処で、readsizeの宣言はどうなっている?
#いや、念の為だ。
0922920
2005/09/02(金) 19:43:44確かに32kぐらいではアクセスエラー起きんわな。
すまん。
0923デフォルトの名無しさん
2005/09/02(金) 19:48:10普通にスタックメモリから65536ぐらい取ってるぞ。
スタックから取れば手動で開放する必要ないし宣言した量以上入れない限りバグも起きにくい。
0924デフォルトの名無しさん
2005/09/02(金) 19:54:31DWORDか、unsigned long以外で宣言しててもコンパイルでエラーが出るはずだが
>>922
デフォルトだと1Mだな、スタックは
ただ、>>917がスタックサイズを変えてなければ、だが
0925デフォルトの名無しさん
2005/09/02(金) 19:56:27なにかの拍子にDataAのスタックが壊れてるとか。
実はリビルドしたら直ってました、とかいうオチとか。
どうせwhileループかなんかで囲ってるんだろうけど
適切なループ処理ができてないとか。
いろいろあるからな。
0926デフォルトの名無しさん
2005/09/02(金) 20:04:08関数丸ごとUP
0927電車男903
2005/09/02(金) 21:08:55じゃなくて本当にすいませんでした・・
わかりました。。
失敗していたときは
第三引数で指定した値より小さいバッファを渡していました。。
最初のmallocで確保か、配列として定義か〜〜
という時点でどちらもバッファのサイズが小さかったのですが
mallocの時はReadFileが失敗しない事が原因でした。
すいませんでした!
しばらく沈没してますです。。
0928デフォルトの名無しさん
2005/09/02(金) 21:46:290929電車男903
2005/09/02(金) 22:00:070930デフォルトの名無しさん
2005/09/02(金) 22:05:380931デフォルトの名無しさん
2005/09/02(金) 22:56:520932デフォルトの名無しさん
2005/09/02(金) 22:57:390933デフォルトの名無しさん
2005/09/02(金) 22:57:46お前なんで俺が痔だって知ってるんだよ
0934デフォルトの名無しさん
2005/09/02(金) 23:01:06ちょっと違うがこんなスレもある
http://pc8.2ch.net/test/read.cgi/win/1051007557/
0935デフォルトの名無しさん
2005/09/03(土) 00:10:56おおすごい。.NET2005でXP専用か。
VC5では作れないのかな。
0936デフォルトの名無しさん
2005/09/03(土) 07:49:580937デフォルトの名無しさん
2005/09/03(土) 11:08:35MFCよりWTLのほうが明らかに使いやすいですね。
いまだにMFCで開発とかされてるけど、やっぱMFCの人気はあるのかな?
0938デフォルトの名無しさん
2005/09/03(土) 11:36:22会社なんかが使ってたら使わざるを得ないし
漏れ1人だけWTL使うぜ!って訳にはいかない罠
0939デフォルトの名無しさん
2005/09/03(土) 11:53:09古くても熟知してるものを使う方がコストが低く済むだろうからねぇ。
0940デフォルトの名無しさん
2005/09/03(土) 11:56:290941デフォルトの名無しさん
2005/09/03(土) 11:58:55俺は駄目だが。
0942デフォルトの名無しさん
2005/09/03(土) 12:10:260943デフォルトの名無しさん
2005/09/03(土) 12:50:030944デフォルトの名無しさん
2005/09/03(土) 13:09:10>>1を読め
0945デフォルトの名無しさん
2005/09/03(土) 13:25:10空気嫁
0946デフォルトの名無しさん
2005/09/03(土) 13:47:340947デフォルトの名無しさん
2005/09/03(土) 14:16:56トグル表示するAPIありませんか?どうも見つからなくて
0948947
2005/09/03(土) 14:30:23sndvol32.exe /r or /t or /sという表記をみつけ、/tで実行したらマウス位置にポップアップされました
0949デフォルトの名無しさん
2005/09/03(土) 14:41:44LoadImageなどで、得たHICONから、
8bppのアルファチャネルのデータを得る方法ってありますか?
GetIconInfoのICONINFO.hbmMaskだと、1/0の2階調しか得られません。
LoadImageしたHICONをDrawIconすると、256階調アルファで
レンダリングされるので、内部では8bppのアルファを持ってると思うんですが。
0950Omoti
2005/09/03(土) 15:33:35本屋でwin32apiの本を立ち読みしてたら(カネは払わない)
「win32apiを使うとメモリ操作ができるよ」
って書いてあったのですが、メモリ操作ができると、
どういう楽しいことができるの?
0951デフォルトの名無しさん
2005/09/03(土) 15:36:370952Omoti
2005/09/03(土) 15:41:38ほかには?
0953デフォルトの名無しさん
2005/09/03(土) 15:43:090954デフォルトの名無しさん
2005/09/03(土) 15:46:130955デフォルトの名無しさん
2005/09/03(土) 15:58:320956デフォルトの名無しさん
2005/09/03(土) 15:59:36流行の"脆弱性"を実装できるのか。
それはいいな。
0957デフォルトの名無しさん
2005/09/03(土) 16:05:51hbmColorのほうにアルファ情報込みで入ってる
hbmMaskは非対応のディスプレイドライバでも
2階調の透過はできるようにするために入ってるだけ。
0958デフォルトの名無しさん
2005/09/03(土) 17:43:38同時に両方動かせないやん
0959Omoti
2005/09/03(土) 19:52:08win32apiって本はあんまり出てないけど
MSDNとかって言うのを見れば全部のってるの?
それは、無料でみれるの?
0960デフォルトの名無しさん
2005/09/03(土) 19:53:270961Omoti
2005/09/03(土) 19:53:33これでみれるの?
0962Omoti
2005/09/03(土) 19:54:330963デフォルトの名無しさん
2005/09/03(土) 19:55:320964Omoti
2005/09/03(土) 19:55:48shellexecute
0965Omoti
2005/09/03(土) 19:56:21どして?
case sensitvieなの?
0966デフォルトの名無しさん
2005/09/03(土) 19:57:260967デフォルトの名無しさん
2005/09/03(土) 19:58:11大文字小文字区別しないような言語でもAPI関数だけは必ず区別されるから
0968デフォルトの名無しさん
2005/09/03(土) 21:04:11// for Jane View
設定(&O);
設定(&O);
機能.あぼーん.NGName << "Omoti";
0969デフォルトの名無しさん
2005/09/04(日) 13:52:560970デフォルトの名無しさん
2005/09/04(日) 13:57:070971デフォルトの名無しさん
2005/09/04(日) 14:04:150972デフォルトの名無しさん
2005/09/04(日) 14:18:50人類全体を相手に何故そんな夢を持つ?
0973デフォルトの名無しさん
2005/09/04(日) 14:24:060974デフォルトの名無しさん
2005/09/04(日) 17:27:53>>971の文章が幼稚で変な使い回しするからだろう
0975デフォルトの名無しさん
2005/09/04(日) 17:30:11「…人間がこの世に…」となればその規模だろ。
0976デフォルトの名無しさん
2005/09/04(日) 19:24:580977デフォルトの名無しさん
2005/09/04(日) 20:07:48それより次スレは?
0978デフォルトの名無しさん
2005/09/04(日) 21:32:480979デフォルトの名無しさん
2005/09/04(日) 21:49:380980デフォルトの名無しさん
2005/09/04(日) 22:17:340981デフォルトの名無しさん
2005/09/04(日) 22:47:04おいおい、Win32APIのスレは需要大だろ。
むしろ、C/C++関連のスレで一番需要があると思うね。
C/C++の言語仕様に関する質問は解説書が充実しているのでわざわざ質問するのもあほらしいが、
Win32APIは決定版というべき解説書がないし、独特なクセもあるし。
0982デフォルトの名無しさん
2005/09/04(日) 22:48:24スレ立てよろ
0983デフォルトの名無しさん
2005/09/04(日) 22:51:380984デフォルトの名無しさん
2005/09/04(日) 22:57:510985デフォルトの名無しさん
2005/09/04(日) 22:59:270986デフォルトの名無しさん
2005/09/04(日) 23:04:43環境C++6.0 windowsxp
今、ハードディスクやCDの容量を調べるプログラムを組んでいます。
GetDiskFreeSpaceExをつかって、ハードディスクの使用量と空き容量は入手できたのですが、
焼かれたCDの空き容量が0になってしまうのです。マイコンピュータのCDドライブのところから、
プロパティを開くと空き容量が表示されるのですが、プログラムでそれを入手することが出来ないのです。
基本的な質問ですが、知恵をお貸し願えませんでしょうか?
よろしくお願いします。
0987デフォルトの名無しさん
2005/09/04(日) 23:09:340988デフォルトの名無しさん
2005/09/04(日) 23:17:32belutionとかにも書いてるだろヴォケ
0989デフォルトの名無しさん
2005/09/04(日) 23:57:42それどんなCD-Rなんだ?
たまたま手元に、埋まってないpacket write(B's CLIP)のCD-Rがあったんで
試してみたが、普通に空き容量取れたよ@Win2k
session closeしたCD-Rだと空き容量ゼロ。当然だけどな。
普通のCD-ROMも当然空き容量ゼロ。
ULARGE_INTEGERの使い方とか間違えてHI DWORDしか読んでないとかいう
つまんない落ちじゃないよね?
0990デフォルトの名無しさん
2005/09/05(月) 00:16:31アニメーションなどの画像の重なりによるちらつきをなくしたいのですが、
ウィンドウを固定にし、画面外に重ねる画像を表示して
画面内にコピーするというアイデアを思いついたのです。
しかしBitBltのSRCCOPYだと写ってはいないけれど、
画面外の領域を指定すると、そのまま画面外(ウィンドウの外)
のものがコピーされてしまいます。
多少強引で構わないので、擬似的にダブルバッファリングのような
ことはできませんか?
0991デフォルトの名無しさん
2005/09/05(月) 00:20:54ヒント: メモリDC
0992デフォルトの名無しさん
2005/09/05(月) 00:40:370993Omoti
2005/09/05(月) 01:11:26http://pc8.2ch.net/test/read.cgi/tech/1125850096/
つぎすれ
0994デフォルトの名無しさん
2005/09/05(月) 01:39:110995デフォルトの名無しさん
2005/09/05(月) 01:49:570996デフォルトの名無しさん
2005/09/05(月) 01:53:480997デフォルトの名無しさん
2005/09/05(月) 02:18:440998デフォルトの名無しさん
2005/09/05(月) 02:19:420999デフォルトの名無しさん
2005/09/05(月) 02:20:131000デフォルトの名無しさん
2005/09/05(月) 02:21:2410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。