Win32API質問箱 Build44
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/06/28(水) 22:38:45やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2006/06/28(水) 22:39:4943 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0003デフォルトの名無しさん
2006/06/28(水) 22:41:0131 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん
2006/06/28(水) 22:42:11http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
http://msdn2.microsoft.com/ja-jp/library/default.aspx
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
http://www.google.com/
- Platform SDK Update
(Windows® 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/
- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005デフォルトの名無しさん
2006/06/28(水) 22:43:11http://pc8.2ch.net/test/read.cgi/gamedev/1016699230/
HSPでRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1082902759/
HSPで出来る範囲について
http://pc8.2ch.net/test/read.cgi/gamedev/1085733089/
HSP - Hot Soup Processor [11]
http://pc8.2ch.net/test/read.cgi/gamedev/1133488968/
HSPでの麻雀プログラムについて
http://pc8.2ch.net/test/read.cgi/gamedev/1047707655/
HSPは・・・
http://pc8.2ch.net/test/read.cgi/gamedev/1104208959/
おまいらHSPで適当なゲームでもつくりませんか
http://pc8.2ch.net/test/read.cgi/gamedev/1102214621/
★ゲーム製作期待の星! HSP Part 9 ★
http://pc8.2ch.net/test/read.cgi/gamedev/1005313791/
HSPで完全オリのSLGを作るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1047478458/
HSPでSLGが作れるようになるまで頑張るスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1103618349/
HSPでモンスター育成SLGを作りましょう!
http://pc8.2ch.net/test/read.cgi/gamedev/1089467139/
ネットゲームforHSP『無人島』制作スレ
http://pc8.2ch.net/test/read.cgi/gamedev/1018534410/
PGの面接で、使える言語はHSPですって言ったら
http://pc8.2ch.net/test/read.cgi/gamedev/1046921466/
HSPでシミュレーションRPG
http://pc8.2ch.net/test/read.cgi/gamedev/1036923414/
0006デフォルトの名無しさん
2006/06/28(水) 22:51:20乙
0007デフォルトの名無しさん
2006/06/28(水) 22:59:18MSDN ライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
0008デフォルトの名無しさん
2006/06/28(水) 23:04:480009デフォルトの名無しさん
2006/06/29(木) 00:22:250010デフォルトの名無しさん
2006/06/29(木) 04:19:110011デフォルトの名無しさん
2006/06/29(木) 19:27:01だけど、APIありますか?
0012デフォルトの名無しさん
2006/06/29(木) 19:28:54だけど、APIありますか?
0013デフォルトの名無しさん
2006/06/29(木) 19:37:17キャッシュされたデータを即座に物理ディスクに書き込むように強制するには、一般に以下の 2 つのコマンドを使用します。
*)flush buffers コマンドは、SCSI および IDE/ATAPI のディスク デバイスで使用できるコマンドであり、
ディスクに対し、キャッシュされたデータをすべて即座にディスクに書き込むように命令します。
SCSI ディスクの場合は、ディスクに SYNCHRONIZE CACHE コマンドを発行することによって実装されています。
IDE/ATAPI ディスクの場合は、ディスクに対して FLUSH CACHE コマンドが送られます。
このコマンドは、通常、Windows のプログラムが FlushFileBuffers API を呼び出した結果として発行されます。
レジストリへの書き込みは、FlushFileBuffers API の呼び出しと
ディスクへの SYNCHRONIZE CACHE コマンドの送信が発生する操作の一例です。
0014デフォルトの名無しさん
2006/06/29(木) 19:38:48*)Write Through コマンドは、SCSI ディスク デバイスでのみ使用でき、ForceUnitAccess (FUA) ビットを設定した状態で
ディスクに対して WRITE コマンドを発行することによって実装されています。この種のコマンドは、現在のデータのパケットを、
オンボード書き込みキャッシュを通さずに、即座にディスクに書き込むように命令します。
通常、この動作が発生するのは、Windows プログラムが、FILE_FLAG_WRITE_THROUGH フラグを設定した状態で
CreateFile API を呼び出して開いたファイルに対して、WriteFile API を呼び出して書き込みを行った場合です。
一般にウイルス検索ソフトウェアは、FILE_FLAG_WRITE_THROUGH フラグを設定した状態でファイルを開きます。
FUA ビットのサポートはオプションです。この機能は、一部の SCSI およびファイバ チャネル (FC) デバイス
(一般には RAID アレイではなく個々のドライブ) にのみ実装されています。
仕様により、これらのコマンドは、ディスクに書き込まれているデータの安全性を確保するため、
ある程度のパフォーマンス (一般にはディスクのオンボード書き込みキャッシュによって提供されるもの) を犠牲にします。
これらのコマンドによってデータがディスクに即座に書き込まれず、さらにディスクの電源が突然切れた場合、
キャッシュされたデータは失われます。また、書き込み中のファイルが破損する可能性もあります。
ファイル・アクセスを細かく制御する (API VC++)
ttp://www.geocities.jp/monalipse/c/api/FileAccess.html
0015デフォルトの名無しさん
2006/06/29(木) 20:17:28参考になりました。
ハードディスク全体のキャッシュの書き出しをしたいので「flush buffers」で目的が達成できそうなんですが、
VCのヘッダー群、Googleで検索してみたんですが、有効な情報が見つけられませんでした。
何か情報ありましたら教えてください。
よろしくお願いします。
0016デフォルトの名無しさん
2006/06/29(木) 20:25:12ttp://wisdom.sakura.ne.jp/system/winapi/win32/win113.html
FlushFileBuffers()
BOOL FlushFileBuffers(HANDLE hFile);
ファイルのバッファをフラッシュします
hFile - GENERIC_WRITE アクセスを持つフラッシュするファイルを指定します
戻り値 - 関数が成功すれば 0 以外、失敗すれば 0
0017デフォルトの名無しさん
2006/06/29(木) 20:25:160018デフォルトの名無しさん
2006/06/29(木) 22:07:31こいつをどうにかするツール作ってぇん
0019デフォルトの名無しさん
2006/06/29(木) 22:31:210020デフォルトの名無しさん
2006/06/29(木) 23:22:030021デフォルトの名無しさん
2006/06/30(金) 01:58:58TerminateProcessかと思ったのですがDLLの管理について問題があるようです
ExitProcessは引数にプロセスのハンドルが渡せないので自プロセスのみかと思われます
0022デフォルトの名無しさん
2006/06/30(金) 02:24:07タスクマネージャがどう処理しているのかは知らないが、
予め終了させたいプロセスが分かっている(hProcessとする)なら
CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "ExitProcess"), 0, 0, NULL);
のように、相手のプロセスに強制的にExitProcessを呼び出させることができるけど。
これでうまくいくかはシラン
002315
2006/06/30(金) 11:47:23スイマセン説明不足でした。
やりたい事は、自分が作ったファイルのキャッシュの書き出だけではく、
システム駆動中のプロセス全部のキャッシュの書き出しを行いたいのです、
(シッピング?のような)
情報ありましたら、よろしくお願いします
0024デフォルトの名無しさん
2006/06/30(金) 17:16:03ですが、どうすればいいでしょうか?
一文字、一文字を入力ならkeybd_eventで入力は出来たのですが文字列で一気に
入力したいのです。理想としては
char MOZI;とかの変数にwscanfなどで入力された文字列を変数に保存(代入?)して
そのあとにNotepadを起動したらその文字列と最後に改行を入力したいのです。
どうかよろしくお願いします。
0026デフォルトの名無しさん
2006/06/30(金) 18:50:01一応言っておくと、22の方法は9xでは使えないが平気?
0027デフォルトの名無しさん
2006/06/30(金) 19:06:52互換性を考慮するのが大変になってきたな…
0028デフォルトの名無しさん
2006/06/30(金) 20:31:59そのリンクに「レジストリに書き込めばすべてフラッシュされる」と書いてある
0029デフォルトの名無しさん
2006/07/01(土) 01:51:03DWORDってDoubleWORD、ワード長*2 って事で32bitなんですよね?
でも今のCPUってIA32だからワード長は32bitじゃないんですか?
0030デフォルトの名無しさん
2006/07/01(土) 01:53:30そういう慣習になってるだけ。
0031デフォルトの名無しさん
2006/07/01(土) 01:55:2316bitのときからあったデータ型なんじゃないのか?
で、そのままソースの互換を保つために32bitに。と適当に回答。
0032デフォルトの名無しさん
2006/07/01(土) 02:02:19即レス感謝です。
0033デフォルトの名無しさん
2006/07/01(土) 02:11:39EnumWindowsだと他のプロセスのメインウィンドウも取得してしまうので困っています。
0034デフォルトの名無しさん
2006/07/01(土) 02:13:59それをGetCurrentProcessIdで取得した自プロセスのIDと比較する。
一致していれば自プロセスのウインドウ。
0035デフォルトの名無しさん
2006/07/01(土) 02:20:41素晴らしいです!ありがとうございます!
0036デフォルトの名無しさん
2006/07/01(土) 07:36:38スレッド単位で良ければEnumThreadWindowsがあるんだけどね。
0037デフォルトの名無しさん
2006/07/01(土) 08:07:33>>980
おっしゃるホバー時に文字列を動的に生成される場合には、
正常に取得できないとの事ですが、そういう場合は
諦めるものとして、それ以外のホバー時に動的に生成しない
ものについて、取得する方法はありますか。
>>983
CPU使用率を取るためにこういう事をしたいんじゃなくて、
タスクマネージャのCPU使用率のように、ころころとツールチップの
内容が変わる場合に、その文字列を取得したいという例です。
勿論取得したい文字列は、タスクマネージャのものではありません・・。
0038デフォルトの名無しさん
2006/07/01(土) 09:22:43Shell_TrayWndから辿っていってToolbarWindow32まで行って、
そいつのToolTip取得して、
そっから文字列取得すればいいだろ。
0040デフォルトの名無しさん
2006/07/01(土) 13:15:05ttp://forums.belution.com/ja/vc/000/271/38.shtml
0041デフォルトの名無しさん
2006/07/01(土) 15:11:21自分の裏のにスルーしたいときってシコシコ自前で中継する方法しかありませんか?
自ウィンドウを表示されてるんだけど存在してないことにしてくれるモードになれるAPIみたいのがほしいです
0042デフォルトの名無しさん
2006/07/01(土) 15:38:470043デフォルトの名無しさん
2006/07/01(土) 15:49:21多分、キーボードイベント・マウスイベントをフォアグランドウィンドウ以外の
ウィンドウで受け取りたいとの事ではないかと。
その機能を実現するAPIは、AttachThreadInput で実現可能
0044デフォルトの名無しさん
2006/07/01(土) 16:13:10つまり、AAであらわすとこんな感じのやつってことでわ?
// |
// 」�� |
// 7Γ |
//_ |
||| | |
| | /
ダンッ | u | /
ダンッ | \ |
ちょwwおまww \ _ | \ |
マトリクスー _―\\ || | ___ |__  ̄ ̄―______-/
Λ_Λ ━−‐‐‐ ) ( ̄ ̄ ̄(Ξ (|| || | _______|__
(;´∀`)━Λ_Λ‐‐ ━−‐‐‐  ̄―//  ̄ ̄(Ξ (|| || ___|―― _________|_
( ) ( ´∀`)ーっ__ ミ / ダンッ (Ξ (|| ||≪| _―― ̄ ̄ |
| | | ⊂ニ__  ̄ヽ\ | ̄― ̄/ ̄ ____―――――――――
(__)_) (__)_) ( ̄(0_/ ̄ ̄ ̄
0045デフォルトの名無しさん
2006/07/01(土) 19:59:48入力されたときに、エラーメッセージをMessageBoxではなく
バルーンを使って表示したいのですが、どうすれば良いでしょうか?
CToolTipCtrl ttc;
ttc.Create(m_hWnd, 0, 0, TTS_BALLOON);
ttc.Activate(TRUE);
ttc.SetTitle(TTI_ERROR, L"エラータイトル");
ttc.AddTool(CToolInfo(TTF_SUBCLASS, GetDlgItem(IDC_EDIT), 0, 0, L"エラーメッセージ"));
こうしてしまうとエディットボックスにカーソルを置かないとエラーメッセージが
表示されないし、IDC_EDITに元からある説明のためのバルーンに重なって表示されてしまいます。
0046デフォルトの名無しさん
2006/07/01(土) 20:31:30まだ課題が山積みですが、一応SDKレベルでActiveXコントロールを初期化する方法がわかりました。
WBC001.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
ttp://winscript.s41.xrea.com/upload/source/No_0015.lzh
あの後、CoCreateInstance()じゃなくてOleCreate()を使うのだ、という事に気付いたのだけれどその後がわからなくて、OleCreateでググったらズバリな記事がCode Projectにありました。ありがとうCode Project!
ttp://www.codeproject.com/com/cwebpage.asp?df=100&forumid=13828&exp=0&select=1119074
しかし、MSにはまたやられた・・・
SDK文書にはDoVerbすると書いてある個所があるのは分かってた。
で、DoVerbのリファレンス見たらEnumVerbしたものをパラメータに入れるって書いてある。
のでIEnumVerb::Next()してみたら一つも列挙できないのでこれじゃDoVerbなんか出来ないな、と思ってたら実はEnumVerbしなくてもDoVerbはできるのだった・・・
それは上のCode Projectの記事でVerb列挙できないWebBrowserコントロールにDoVerbしているのを見てわかったのだった・・・
・・・MSDN・・・なぜこんなにもオレを酷い目に遭わせる・・・OrZ
なお、現在ひっかかっているのはタブストップです。コントロール内の各コントロール(ボタンとかエディットとか)やリンクをTABキーで巡回できません。
そもそも私はTABキーで移動する正式なやり方を知らなくて、
いつもはメインループ部でWM_KEYDOWN/VK_TABが来たら次の子ウィンドウにSetFocusする、という方法をやってます。(バカなのかも)
たぶんみなさんならTABキーで移動できる方法が想像つくんじゃないでしょうか?
で、何はともあれ、これでどんなコンパイラでもWebBrowserコントロールが使えます!
BCCでもgccでもWin32対応なら何でもです!(NASMとかもありかも) MSに頼る必要はもうありません!
うーん・・・ブラウザ百出の予感・・・
長文失礼しました。m(_ _)m
0047デフォルトの名無しさん
2006/07/01(土) 21:18:27Sub1〜Sub8っていう関数名どうにかしろよ。
0048デフォルトの名無しさん
2006/07/01(土) 21:22:47コンストラクタでAddRef呼んで、デストラクタでRelease呼ぶのもおかしいだろ。
0049デフォルトの名無しさん
2006/07/01(土) 22:47:05色々ワロタ
0050デフォルトの名無しさん
2006/07/01(土) 23:59:45よくわからんが↓と同じ方法か?
http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html
見た瞬間、泣きながら「ATL使おう」とか思ったけど、同じことを調べてやったてんなら神だな。
mingwってATLだけ対応してないってことなんだ。Oleは対応してんだね。
漏れも今WebBrowserコントロールをATLで使ってるが、gccが使えるのはいいな。
とにかく、Sub1〜Sub8っていう関数名どうにかしろよ。
005150
2006/07/02(日) 00:07:35ウィンドウスタイルのWS_TABSTOP指定してないんじゃないか?
0052デフォルトの名無しさん
2006/07/02(日) 01:14:05LayeredWindow
0053デフォルトの名無しさん
2006/07/02(日) 01:26:11http://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.asp
ウィンドウスタイルに TOPMOST と Transparent を同時に指定してみて下さい
0054デフォルトの名無しさん
2006/07/02(日) 07:49:08そのプロセスハンドルを取得するにはどうすればいいのでしょうか?
0055デフォルトの名無しさん
2006/07/02(日) 07:52:350056デフォルトの名無しさん
2006/07/02(日) 10:22:58HBITMAP・・・・画像のデータ情報
HBITMAPの形式
・DIB・・・・・多様性が高い情報形式
・DDB・・・・マイナーな情報形式
上の認識でOK?
CreateCompatibleDCでDCを55個作りまくったんだんだが、たった55kアップ。
メモリがあまり変化してない、画像データってもっとメモリ食うと思ってたよ。
0057デフォルトの名無しさん
2006/07/02(日) 10:25:090058デフォルトの名無しさん
2006/07/02(日) 10:33:23ソフトで対応しているものは多いのに、なぜだめなのでしょうか?MSDNで調べてみましたが、見つかりませんでした。
それとも別の方法で実現しているのでしょうか?ほかに原因と思われるものはないのですが・・
よろしくお願いします。
0059デフォルトの名無しさん
2006/07/02(日) 11:12:31HDCはデバイスコンテキストへのハンドル
デバイスコンテキストというのは抽象的なもので
描画先はウインドウだったり、プリンタだったりする。
これによって、描画先が何であろうと、プログラマが気にしなくてすむ。
DIBとDDBは簡潔に説明するのが、自分には無理なのでパス
CreateCompatibleDCで作ったデバイスコンテキストには、
1x1モノクロのビットマップが割り当てられている。
もしこのDCに描画したかったら、自分でビットマップを確保して
SelectObject()すること。
0060デフォルトの名無しさん
2006/07/02(日) 12:22:26プロセスを列挙して一個ずつ条件にあうかどうか調べる。
0061デフォルトの名無しさん
2006/07/02(日) 12:22:46画像の表示までは出来た・・・・
透明も・・・しかし半透明ができない!w
やっぱ一個一個計算していくしかないのね・・・うはすふあhふdsyひゅは オワタ
0062デフォルトの名無しさん
2006/07/02(日) 13:07:54HDC…画家
HBITMAP…紙
DIB…デバイスに依存しない統一された形式
DDB…デバイスによってフォーマットが異なる
0063デフォルトの名無しさん
2006/07/02(日) 13:11:36俺は、HDCが画像を書く板という認識でもよいと思う。
ただ、CreateCompatibleDCで作ったデバイスコンテキスト(板)は、
その上に紙(ビットマップ)を置いて、その紙に画を描くんだという感じ。
(紙を置くとは、HBITMAPをSelectObjectで選択するということ)
初期状態では、1×1モノクロと言うどうしようもないほど小さな紙が置いてある。
紙がない状態が存在すると面倒だから、とりあえず置いてあります程度に考えておけばいい。
結構無理がある言い方だけど、これは連想ゲームの限界。
また、DDBはマイナーでもなんでもない。ただ内部でのみ使われるので外に現れないというだけ。
HBITMAPはDDB。DIBのHBITMAPは存在しないと思え。(ハイブリッドなDIBセクションというのもあるが)
0064デフォルトの名無しさん
2006/07/02(日) 15:51:48リンクしています...
WinMain.obj : error LNK2019: 未解決の外部シンボル "public: static struct tagBITMAPINFO * CSpriteAlpha::lpDibBitInfo" (?lpDibBitInfo@CSpriteAlpha@@2PAUtagBITMAPINFO@@A) が
関数 "public: _thiscall CSpriteAlpha::~CSpriteAlpha(void)" (??1CSpriteAlpha@@QAE@XZ) で参照されました。
WinMain.obj : error LNK2019: 未解決の外部シンボル "public: static struct HBITMAP__ * CSpriteAlpha::hDib" (?hDib@CSpriteAlpha@@2PAUHBITMAP__@@A) が
関数 "public: __thiscall CSpriteAlpha::~CSpriteAlpha(void)" (??1CSpriteAlpha@@QAE@XZ) で参照されました。
WinMain.obj : error LNK2019: 未解決の外部シンボル "public: static struct HDC__ * CSpriteAlpha::hDC" (?hDC@CSpriteAlpha@@2PAUHDC__@@A) が
関数 "public: __thiscall CSpriteAlpha::~CSpriteAlpha(void)" (??1CSpriteAlpha@@QAE@XZ) で参照されました。
D:\c\works\takuhai\Debug\01.exe : fatal error LNK1120: 外部参照 3 が未解決です。
ビルドログは "file://d:\c\works\takuhai\01\Debug\BuildLog.htm" に保存されました。
01 - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
0065デフォルトの名無しさん
2006/07/02(日) 16:18:26. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ チラシの裏にでも書いてろ
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
0066デフォルトの名無しさん
2006/07/02(日) 19:14:53HBITMAP…紙
ペンやブラシ・・・画材
LineTo 等の関数・・・画家
0067デフォルトの名無しさん
2006/07/02(日) 19:45:11LoadImageやBitBltで画像の表示&色抜きは出来たけど、
半透明&回転が出来ない、どうやらDDBでは無理らしい。
なのでDIB(直接アクセス?)でやらんといけないとか・・
表示はStretchDIBitsでやるのかBitBltは!?
あ〜 もうダメポ・・・・・orz
DirectXの方が簡単に思えてきた。
0068デフォルトの名無しさん
2006/07/02(日) 19:53:27ここはお前の(ry
0069デフォルトの名無しさん
2006/07/02(日) 20:07:02ライブラリ組んでしまえばDirect3D使った方が楽な上に早い
0070デフォルトの名無しさん
2006/07/02(日) 20:07:39ちらし
DIBSectionを使えばいいことが発見!!
DDBは回転&透明でない、DIBは使いづらいなどの欠点を解決した!?
いいとこどりのDIBSection!!!
DIBSectionは速度どうだろう、測定してみるか。
0071デフォルトの名無しさん
2006/07/02(日) 20:09:48DirectX使えない人のためにGDIの方がいいと思って。
DirectX使えない人はいまだに見かけるorz
やっぱ切り捨てたほうがよさげ!?
0072デフォルトの名無しさん
2006/07/02(日) 20:12:130073デフォルトの名無しさん
2006/07/02(日) 20:12:57とりあえず「今日は〜ができました」とか言ったことはチラシの裏に書いとけ
ここは質問箱
0074AlphaBlend
2006/07/02(日) 20:21:40ちなみに、我輩はXPです。
0075デフォルトの名無しさん
2006/07/02(日) 20:34:42cos -sin
sin cos
0076デフォルトの名無しさん
2006/07/02(日) 20:38:16thx
無事成功すると思います。
0077デフォルトの名無しさん
2006/07/02(日) 21:29:45640*480 十回表示。
DDB 30fps CPU 8%
DIBSection 3fps CPU100%
使えない・・・・orz
0078デフォルトの名無しさん
2006/07/02(日) 21:30:20で、質問は何?
0079デフォルトの名無しさん
2006/07/02(日) 21:56:03じゃ、質問
早い回転&透明が出来る方法教えて。
0080デフォルトの名無しさん
2006/07/02(日) 22:02:280081デフォルトの名無しさん
2006/07/02(日) 22:07:41質問聞いといて、答えられないw
0083デフォルトの名無しさん
2006/07/02(日) 22:18:18煩雑にファイルの出し入れや書き換えをしているフォルダが複数あるのですが、
それらのファイルの状況を監視したいと思っているのですが、
数が多すぎて通常のファイルアクセスでは遅くなってしまいます。
そこで、OSがファイル書き込みした時やファイル書き換えをする時などに、フックを仕掛けられないかと思っているのですが、
そのような方法をご存知の方がいましたらご教授ください。
0084デフォルトの名無しさん
2006/07/02(日) 22:25:10c言語のソースをコンパイルしたいのですがどうするのか・・・。
コマンドプロンプトでしたいのですが
008583
2006/07/02(日) 22:29:52しばらく検索をしていたら、目的のことができそうなトピックを見つけました。
拡張シェルオブジェクトのICopyHookインターフェイスで出来そうです。
http://www.asahi-net.or.jp/~GV4J-SGUR/narik/stp002b.htm#ICopyHook
これでなんとか挑戦してみます。ありがとうございました。
0086デフォルトの名無しさん
2006/07/02(日) 22:58:560087デフォルトの名無しさん
2006/07/02(日) 23:16:11nmake
0088デフォルトの名無しさん
2006/07/02(日) 23:31:32a.cをコンパイルするとしたら、
VCならコマンドプロンプトから cl.exe a.c
mingwならコマンドプロンプトから g++.exe a.c
BCCならコマンドプロンプトから bcc32.exe a.c
コマンドラインの引数が知りたかったら cl /? とか g++ -h とかbcc32は知らん。とかすればいい。
008945
2006/07/02(日) 23:39:30009083
2006/07/02(日) 23:41:13レスありがとうございます。
知りませんでした。情報ありがとうございます。m(_ _)m
ただWaitForSingleObjectがブロック関数なので、同時に監視したいフォルダの数だけスレッドを作らないといけないみたいですね。
ICopyHookインターフェイスと異なりNTFSだけというわけではなく
Win95,NT3.1以降対象なので、FAT32でも問題なく動きそうなのでこちらで検討してみます。
0091デフォルトの名無しさん
2006/07/02(日) 23:45:03少しは勉強しろよ。
WaitForSingleObject()が見つかれば、すぐそばにWaitForMultipleObjects()があるだろ。
009283
2006/07/02(日) 23:56:50レスありがとうございます。
気づきませんでした。まだプログラムの感覚が鈍いと反省してます・・・・
監視自体が内部的には別スレッド動いているみたいですね。
0093デフォルトの名無しさん
2006/07/03(月) 00:09:08┐(´-`)┌
0094デフォルトの名無しさん
2006/07/03(月) 00:31:37ここにint型を指定したいんですがどうすればよいでしょうか?
MessageBox(0,i,NULL,MB_OK);
みたいにやりたいんですが
0095デフォルトの名無しさん
2006/07/03(月) 00:34:06itoa
0096デフォルトの名無しさん
2006/07/03(月) 00:41:44無理。itoaとかsprintfとかで文字列に変換してからに指定しる。
0097デフォルトの名無しさん
2006/07/03(月) 00:48:24これって俺のプログラムミス?
異常だよな、、、サイト探してるとDIBSection普通に使っているし。
009894
2006/07/03(月) 01:23:21>>96さん
どうもありがとうございます
char buff[100];
int i = 3;
sprintf(buff, "%d", i);
MessageBox(0,buff,0,MB_OK);
でいけました
0099デフォルトの名無しさん
2006/07/03(月) 04:56:55ICopyHookがNT3.1にあるとでも思ってるのか?
http://windowssdk.msdn.microsoft.com/en-us/library/ms646539.aspx
> Minimum DLL Version: shell32.dll version 4.0 or later
> Minimum operating systems: Windows NT 4.0, Windows 95
自分が確認もできない環境に妄想だけで対応した気になるのやめろ
0100デフォルトの名無しさん
2006/07/03(月) 07:37:37おまえ恥ずかしいなww
0101デフォルトの名無しさん
2006/07/03(月) 09:47:59ぷぎゃーw
0102デフォルトの名無しさん
2006/07/03(月) 09:49:21例えば赤い丸の図形があってこれを青色にしたいとき。
こういう場合は、再描画(丸をいったん消して、ペンの色を変えて円を書き直す。)
するしかないのでしょうか。
0103デフォルトの名無しさん
2006/07/03(月) 12:16:060104デフォルトの名無しさん
2006/07/03(月) 13:24:24どういう方法をとるのが楽ですか?
普通にCreateMenu、AppendMenuをして map<UINT, string>型のグローバル変数に
IDとファイル名を保存しておいて、WndProcでどのメニューアイテムが
クリックされたか取得というのを考えたのですが、どうでしょうか。
0105デフォルトの名無しさん
2006/07/03(月) 13:32:550106デフォルトの名無しさん
2006/07/03(月) 14:21:57指定されたフォルダの中のファイルを全て削除するプログラム作ってけろ。
サブフォルダがある場合は再帰的に。
よろぴく。
0107デフォルトの名無しさん
2006/07/03(月) 14:22:570108デフォルトの名無しさん
2006/07/03(月) 14:42:01「NULL で終わる文字列へのポインタを指定します」
とありますが、
FindWindow(NULL,"aaaaa");
とすると、aaaaaというタイトルのウィンドウがあればちゃんとハンドルが帰ってきます。
例えばchar a[] = "aaaa";
とすればa[]には実際にはaaaa\0が格納されますが、
LPCTSTR型に関しても同じ作用があるのでしょうか?
あ、LPCTSTR型ってchar *の別名でしたっけ?
0109デフォルトの名無しさん
2006/07/03(月) 14:49:20Win32APIというよりC/C++の問題。
"aaaaa"のような文字列リテラルは、ヌル文字終端の文字の配列。
LPCTSTRはconst TCHAR *のtypedef。
そう思いたいのなら、const char *のtypedefだと思えばいい。
0110デフォルトの名無しさん
2006/07/03(月) 15:06:16WM_DROPFILESのメッセージが来ません。ぐぐってみた所、
リッチエディットコントロールだと、EN_DROPFILESというのがあるようなのですが、
リストビューの場合は、Drag&Dropを受け取る手段が無いのでしょうか?
0111108
2006/07/03(月) 15:07:33はやっ
全然知りませんでした。ありがとうございます
TCHARを調べてみると
For Unicode platforms, TCHAR is defined as synonymous with the WCHAR type.
とありました
#define _UNICODE
すれば wcharになるんですね
0112デフォルトの名無しさん
2006/07/03(月) 15:31:470113デフォルトの名無しさん
2006/07/03(月) 17:56:33作ったよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2239.c
一応 fool proof にしてあるつもりだが
くれぐれも気を付けて使ってくれ
0114デフォルトの名無しさん
2006/07/03(月) 19:22:12自作アプリを一旦終了し、また再起動(パソコンの再起動じゃないよ、自作アプリの再起動)させてたい。
こんな事したいんですけど、気の利いたAPIありますか?
それとも、別のプロセスで見張ってないとですか?
知ってたら教えてください。
0115デフォルトの名無しさん
2006/07/03(月) 19:24:24Tera Termからコマンド入力するプログラムがあるのですが、コマンドを毎回入力するのは
面倒ということで簡単なリモコンぽいモノをVCで作ることになりました。
Tera Termからのコマンド入力という考え方はそのままで、VCのボタンなりを押下することで
Tera Termのコンソール部にメッセージを送りたいと思っています。
(例えば、STARTボタンを押下するとコンソール部にstartと表示される)
FindWindowでTera Termのウインドウハンドルを取得して、SendMessageでメッセージを送ろうとしたのですが、
Tera Termのハンドルの取得がうまくないのか、コンソール部ではなく、タイトル部に対してメッセージを送ってしまい
タイトル名が変更されるという結果になってしまいました。
何か処理が足りないのでしょうか?それとも他の方法があるのでしょうか?
ご教授のほど、お願いします。
0116デフォルトの名無しさん
2006/07/03(月) 19:32:54自exeを起動して、自プロセスを終了させるだけじゃん。
0117デフォルトの名無しさん
2006/07/03(月) 19:38:21spy++でどういうウィンドウ構成になっているか調べろ。
0118デフォルトの名無しさん
2006/07/03(月) 19:40:380119デフォルトの名無しさん
2006/07/03(月) 19:43:340120デフォルトの名無しさん
2006/07/03(月) 20:15:00ToolTipに影をつけるには何が必要ですか?
0121デフォルトの名無しさん
2006/07/03(月) 20:29:060122115
2006/07/03(月) 20:37:50早速のレスありがとうございます。
解決しましたと言いたいところですが、明日改めて確認してみます。
会社ではネットを見る権限がないので・・・
spy++とTera Termのヘルプですか。
spy++は確認したつもりですが、理解不足だったみたいですね。
ヘルプはTera Term側が原因と思わず、見向きもしてませんでした。
0123デフォルトの名無しさん
2006/07/03(月) 21:04:23SH〜〜のAPIにそういう関数があったと思う。SHRemoveDirectoryだっけか、よく覚えてないが
0124デフォルトの名無しさん
2006/07/03(月) 21:21:15DeleteFileより、
> To recursively delete the files in a directory, use the
> SHFileOperation function.
ということのようです。
0125デフォルトの名無しさん
2006/07/03(月) 21:32:11どうやって受け取るのでしょうか。WM_DROPFILESのメッセージも来ないようですし、
WM_COMMANDやWM_NOTIFYをチェックしてもそれらしいメッセージが見当たりません。
0126デフォルトの名無しさん
2006/07/03(月) 21:46:49ぐぐってると、コモンコントロールへのドロップは、
サブクラス化しないと受け取れないという事が書いてありましたので、
試してみたらいけました。お騒がせしました。
0127デフォルトの名無しさん
2006/07/03(月) 21:50:08多重起動防止のロジックを応用して、
起動時に多重起動だったら
古いプロセスを殺すようにしておいて
再起動したいときはargv[0]を
CreateProcess()する。
という手はよく使う。
0128120
2006/07/03(月) 22:27:320129デフォルトの名無しさん
2006/07/03(月) 22:34:42マクロ使えよ
0130デフォルトの名無しさん
2006/07/03(月) 22:42:310131デフォルトの名無しさん
2006/07/03(月) 22:43:29出来るよ
0132デフォルトの名無しさん
2006/07/03(月) 22:45:000133デフォルトの名無しさん
2006/07/04(火) 01:12:43大変ありがとうございました。
さっそく、明日、会社で、参考にさせていただきます。
0134デフォルトの名無しさん
2006/07/04(火) 01:29:03>>132
ありがと。思い出した
ぱすみえみたいなツール作る時に使ったんだった
0135デフォルトの名無しさん
2006/07/04(火) 03:10:480136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
2006/07/04(火) 03:23:40void *buf = HeapAlloc( GetProcessHeap(), 0, size );
if ( buf == NULL ) return 1;
HeapFree( GetProcessHeap(), 0, buf );
みたいなのは安全?
0138デフォルトの名無しさん
2006/07/04(火) 03:26:35安全
0139デフォルトの名無しさん
2006/07/04(火) 03:28:35起動時や終了時、ログオン、ログオフ時に何か処理をしたいと思っているのですが
どんなメッセージを捕まえればよいのかさっぱりで途方にくれています。
何かヒントをいただけませんでしょうか?
0140デフォルトの名無しさん
2006/07/04(火) 03:32:11アプリも動いてないし。
ログオフ時、終了時には WM_QUERYENDSESSION とか
WM_ENDSESSION とか来ますよ。
0141デフォルトの名無しさん
2006/07/04(火) 03:38:21その二つのメッセージがあれば目的を達成できそうです。
回答ありがとうございますた。
0142デフォルトの名無しさん
2006/07/04(火) 03:41:38続けてお尋ねしたいのですが
ログオフ時と終了時の区別、スタンバイと休止の区別をつけることは出来ますでしょうか?
0143デフォルトの名無しさん
2006/07/04(火) 03:50:38安全なのね、よかった。
ありがとう。
0144デフォルトの名無しさん
2006/07/04(火) 03:54:38スタンバイ等のときにはWM_POWERBROADCASTも来ますので、
それでなんとかならないでしょうか。
0145デフォルトの名無しさん
2006/07/04(火) 04:03:39回答ありがとうございます。
それが私の環境ですと休止、スタンバイとWM_POWERBROADCASTが送られてきて
スタンバイと休止の区別が付きませんでした。
環境はWindowsXPsp2です。
それにしてもXPのグループポリシーでは起動・終了・ログオフ・ログオンを区別出来てるようなのに
それに対するメッセージがないのはなんでだろう。
0146デフォルトの名無しさん
2006/07/04(火) 04:11:57WM_POWERBROADCASTが飛んできたらwParamを見て、
PBT_APMQUERYSTANDBYになっていたらスタンバイ
PBT_APMQUERYSUSPENDになっていたら休止状態
じゃなかったっけ?
0147デフォルトの名無しさん
2006/07/04(火) 04:15:50私もそう思っていたのですが検証してみると
PBT_APMQUERYSUSPENDのみ飛んできて
STANDBYと名の付くメッセージは飛んできませんでした。
何かおかしいのかな?
0148デフォルトの名無しさん
2006/07/04(火) 04:20:59根拠が不明だから本当に安全かどうか分からん
単に「今まで動いてた」ってだけかもしれないし
>>147
PBT_APMQUERYSTANDBYは廃止されたっぽい。
ヘッダには残ってるけどMSDNからは説明が消えてる
0149デフォルトの名無しさん
2006/07/04(火) 04:22:58HeapAlloc/HeapFreeの引数にGetProcessHeapを使うイディオムは
MSDN内のサンプルコードの所々に使われてるよ。
0150デフォルトの名無しさん
2006/07/04(火) 05:16:51あーすまん、>>137のコード読み違えてた
これなら確かに安全なはずだな
0151デフォルトの名無しさん
2006/07/04(火) 07:27:36でも俺はGetProcessHeapを呼び出すオーバーヘッドが気になって、
結局グローバル変数にコピーする派。
0152デフォルトの名無しさん
2006/07/04(火) 11:53:36以前に誰かのサイトで、
サンザ探したけどその情報の取得の仕方はわからず、
NT系列のOSではレジストリのどっかに書かれてるので結局それを参照した
とかいうことが書かれていますた・・・
0153デフォルトの名無しさん
2006/07/04(火) 16:04:17どうすれば良いでしょうか。グローバルフックしてメッセージを破棄すれば良さそうなのは
分かるのですが、そうすると全てのウインドウに対して行われてしまいますので^^;
0154デフォルトの名無しさん
2006/07/04(火) 16:05:30ピクセルの色をグラデーションみたいに表示したいんだけど
いい方法あったら教えてほしいんだ。
本にGetPixelとSetPixel関数は使わないほうがいいって書いてて、
実際それでコーディングしてみたらウィンドウサイズ変更のたびに重くて使えない。
0155デフォルトの名無しさん
2006/07/04(火) 16:07:20GradientFill とか。
0156153
2006/07/04(火) 16:09:210157デフォルトの名無しさん
2006/07/04(火) 16:25:10グローバルフックして、その特定のプロセス(のウインドウ)だけ処理すればいいじゃない。
0158デフォルトの名無しさん
2006/07/04(火) 16:42:57ありがとう。
今調べてるんだけどGradientFill関数のサンプルコードがなかなか見つからない・・・
なんか知らない構造体が引数になっててとまどってる
0159デフォルトの名無しさん
2006/07/04(火) 17:12:30ttp://blog.livedoor.jp/junki560/archives/18495762.html
0160デフォルトの名無しさん
2006/07/04(火) 17:26:46ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_8oa4.asp
0161デフォルトの名無しさん
2006/07/04(火) 18:03:13システムメニューから削っちゃえば?
元にもどせるかどうか知らんけど。
0162デフォルトの名無しさん
NGNGオーバーラップI/O で、WriteFile の引数に送りたいデータのポインタを
渡した後、そのデータをすぐに書き換えてしまうのは危険でしょうか?
それとも、内部でコピーを取ってくれているものなんでしょうか?
0163デフォルトの名無しさん
2006/07/04(火) 22:42:03出力バッファを使って書き込み操作を行っている間にそのバッファにアクセスすると、
そのバッファを使って書き込んだデータが壊れることがあります。書き込み操作が完了するまでは、
アプリケーションは出力バッファの読み取り、書き込み、再割り当て、解放を行ってはなりません。
0164デフォルトの名無しさん
2006/07/04(火) 22:43:37存在しているわけで
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
2006/07/05(水) 11:18:23どの関数を使うのがいいのかな?
NetGetDCNameじゃ、PDCしか取ってこなさそうだし・・・・
これ使うと幸せになれるよってのがありましたら教えてください。
0167デフォルトの名無しさん
2006/07/05(水) 11:49:110168デフォルトの名無しさん
2006/07/05(水) 12:14:20自分の作ったアプリを一般に公開されたWin Vistaのパブリックベータ版(日本語版 build 5384)で動くか試してみたんです、
殆どは動作したんですが、一部自作のCOMコンポーネントを使ってるアプリが動作せず、調べてみるとコンポーネントの登録に失敗しているようで、
試しに該当COMのDLLを「regserv32 自作コンポーネント.dll」とすると、エラーしてしまい
ダイアログで「このアプリケーションのサイドバイサイド構成が正しくないため・・・・」と出力されてしまいました。
Dependency Walkerで欠損ファイルが無い事は確認してるんですが、
Manifestとかそういう問題なんでしょうか、何か情報ありましたらよろしくお願いします。
0169デフォルトの名無しさん
2006/07/05(水) 12:30:04スレ違いもいいとこだ…
同じように困ってる人がいるという情報まで
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=518620&SiteID=1
0170デフォルトの名無しさん
2006/07/05(水) 15:40:57欠落エクスポート(利用しているシンボルが無い)とかも無いですか?
0171デフォルトの名無しさん
2006/07/06(木) 12:47:100172デフォルトの名無しさん
2006/07/06(木) 12:51:010173172
2006/07/06(木) 12:51:540174デフォルトの名無しさん
2006/07/06(木) 13:05:30設定したデータが64ビット環境において
内部で64ビットデータとして扱われているかどうか
確認された方はいますか?
MSDNで32ビットデータと書かれている為、ここにポインタを代入する
コードを書くのが不安になっています。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_Win32_SetWindowLongPtr.asp
もっとも英語版MSDNにそのような記述は無いので
単に日本語版が古いだけかもしれませんが・・
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassfunctions/setwindowlongptr.asp
0175デフォルトの名無しさん
2006/07/06(木) 15:38:37UserData目的ならSetPropのほうがいいと思われ
SetPropならHANDLEなんで元からポインタだし
0176デフォルトの名無しさん
2006/07/06(木) 17:30:000177デフォルトの名無しさん
2006/07/06(木) 21:13:41該当スレッドにWM_HOTKEYが飛びますが、
そのとき現在フォアグラウンドのウインドウに、
ホットキーを押した情報が伝わるようにするには、
どうしたらいいでしょうか。
該当スレッドのWM_HOTKEY処理内でkeybd_eventを発行してみましたが、
上手く行きません。
0178デフォルトの名無しさん
2006/07/06(木) 22:24:53続きをこちらで質問させてください。
DLLでWH_CALLWNDPROCをフックしてるのですが
g_hHookWnd = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, g_hDll, 0);
のように第4引数を0で呼び出してもシステムフックできず、ローカルフックしか出来ません。
何が原因として考えられるでしょうか?
0179デフォルトの名無しさん
2006/07/06(木) 22:33:170180デフォルトの名無しさん
2006/07/06(木) 22:39:12フックをセットする関数はDLL外部に開放してEXEから呼んでいますが、
CallWndProc()自体はDLL内に定義しています。
このDLLは全てCで書かれていて正常に動作するソースをそのまま
使っているのですが、MFCのSDIアプリから呼ぶとSDIアプリのメッセージ
しか受け取れないようなんです。
0181デフォルトの名無しさん
2006/07/06(木) 23:45:540182デフォルトの名無しさん
2006/07/07(金) 00:54:06突然、重くなる。
しかもメモリもどんどん食うしwww
これはバグなのか!?
DirectXと同じようにデバイスの再構築とか必要なのか
エロい人教えて!
0183デフォルトの名無しさん
2006/07/07(金) 01:11:22http://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/08.html
ここのDLLの中でのグローバル化についてとか
ちなみにlParamのCWPSTRUCTへのポインタだけど
こいつをExeに直接渡しても参照エラー起こるから気を付けて
0184デフォルトの名無しさん
2006/07/07(金) 12:10:43notepad.exe [ENTER]
と打ち込むとメモ帳が開きます。
一方、メモ帳のアイコンをダブルクリックしてもメモ帳が開きますが、
質問は、メモ帳さん自身が、自分はDOS窓から起動されたのか、アイコンのダブルクリックで起動されたのか、
あるいは、他のアプリからsystem()とかcreateProcess()などで起動されたのか、
そういう違いを判定することはできますか?
0185デフォルトの名無しさん
2006/07/07(金) 12:18:46GetStartupInfo関数だったかな?
0186デフォルトの名無しさん
2006/07/07(金) 12:22:05ありがとうございます。
早速調べてみます。
0187デフォルトの名無しさん
2006/07/07(金) 12:35:10ありがとうございます。
最初は>>183さんのサイトのサンプルを参考に作っていたのですが、
それで上手くいきませんでした。
(オリジナルのキーフックの方は上手く行くのですが)
しかし色々と調べてみて解決したようなので一応ご報告。
DLLでフックしたメッセージを共有メモリに詰め込んで親画面宛てに
ユーザーメッセージを送信していたのですが、SendMessage()する際の
親画面のhWndが共有されてなかった事が原因だったようです。
・・・この辺の根本的な理由はよく判ってないのですが。
SetWindowsHookEx()が返すハンドルを共有化する理由も
よく判らずにサンプルのまま使っていたので気付きませんでした。
この辺の情報がまとまった本をご存知の方がいらっしゃいましたら
ぜひ教えてください。
0188デフォルトの名無しさん
2006/07/07(金) 12:39:54Windows系OSの場合、プロセスの起動は最終的に "CreateProcess" APIを利用して
起動されます。
DOS窓からの起動、プログラムアイコンのダブルクリックによるExplorerからの
起動、任意のプログラムからの起動も最終的には "CreateProcess" を呼び出して
起動されますので、起動方法の違いを判定する事は出来ません。
但し、メモ帳の起動を行った親プロセスの確認を行う事は出来ます。
メモ帳の親プロセスの確認を行う事で、DOS窓からの起動かExplorerからの起動
かの確認を行うことが出来ます。
CreateToolhelp32Snapshotでググって見て下さい。
0189デフォルトの名無しさん
2006/07/07(金) 14:08:54処理を分けるにはどうすればよいでしょうか?
PUSHBUTTONだと押して離したときにWM_COMMANDメッセージが送信されるだけなんです。
0190デフォルトの名無しさん
2006/07/07(金) 15:20:46WM_LBUTTONUPとかWM_LBUTTONDOWNとかでは解決できない話?
0191デフォルトの名無しさん
2006/07/07(金) 15:51:46詳しい解説ありがとうございました。
早速Googleしているところです。
0192デフォルトの名無しさん
2006/07/07(金) 16:28:27ディスクI/Oの現状アクセス状況の取得というのは可能なのでしょうか?
もし可能でご存知の方がいましたらご教授ください。
0193デフォルトの名無しさん
2006/07/07(金) 16:38:310194デフォルトの名無しさん
2006/07/07(金) 16:41:06パフォーマンスメーター用のAPIがあったような気がする
WMIだったかな
CからWMI呼んでいいなら可能
0195デフォルトの名無しさん
2006/07/07(金) 16:45:42「WM_MOUSEMOVE」で作ってみたいのですが、マウスを早く動かすと振り切られて
点線のようになってしまいます。SetCaptureも試してみたのですがうまくいきません。
MFCではMoveToなどで解決できるみたいですが、APIではどうしたらいいでしょう?
0196デフォルトの名無しさん
2006/07/07(金) 16:47:13というような質問に対して詳細な回答をしたばかりに、
出来るかどうかしか聞いてねーのに
何知識ひけらかして余計なこと書いてんのw?
などと書かれて、軽い人間不信に陥ることがたまにあります。
質問者はちゃんと自分の無知がばれるリスクをとって、
「〜のやり方がわからないので教えてください」と書きましょう。
0197デフォルトの名無しさん
2006/07/07(金) 16:48:01WindowsNT系OSに特化できるのであれば、
パフォーマンスカウンタでググって見て下さい。
0198デフォルトの名無しさん
2006/07/07(金) 16:51:20MoveTo
0199デフォルトの名無しさん
2006/07/07(金) 16:52:34WM_LBUTTONDOWN で現在位置を保存。押してるよフラグを true に。
WM_MOUSEMOVE で、押してるよフラグがtrueなら、
前の位置から新しい位置までMoveTo,LineToで線を引く(新しい位置を現在位置として保存)。
WM_LBUTTONUP で押してるよフラグをfalseに
そんな感じ。いずれにせよ SetCapture/ReleaseCapture は適切に呼ぶ必要がある。
WM_MOUSEMOVE ではどうもイベントが間引かれているんじゃないかという疑いが
ある場合には、タイマーか何かで GetCursorPosを呼んで監視。
0200195
2006/07/07(金) 16:59:45>>199
どうもお早い解答ありがとうございます。
MoveToは使えるんですね・・書いたらエラーが出たので他のやり方がある
ものだと思ってました。今度からはもっとちゃんと調べてから質問します。
0201デフォルトの名無しさん
2006/07/07(金) 17:00:560202デフォルトの名無しさん
2006/07/07(金) 17:09:41> 出来るかどうかしか聞いてねーのに
> 何知識ひけらかして余計なこと書いてんのw?
赤の他人の煽りだろ。どこまで神経質なんだよ。
0203デフォルトの名無しさん
2006/07/07(金) 17:17:20WMIにて解決できそうです。
レスありがとうございました。
http://207.46.19.60/japan/technet/scriptcenter/scripts/storage/disks/monitor/stmovb04.mspx
0204デフォルトの名無しさん
2006/07/07(金) 17:34:540205デフォルトの名無しさん
2006/07/07(金) 17:46:57ここらへんが参考になるかな?
http://zatsugaku.info/index.php?Program%2FWmi%2FProgram
0206デフォルトの名無しさん
2006/07/07(金) 19:47:08本は知らんけど共有化する理由は、
システムフックの場合、フックプロシージャを持つDLLは各プロセスごとにロードされるから。
単純に変数に入れといても、別のプロセス中のメッセージをフックしたときにはDLLごと別のインスタンスなので
それを考慮して、フックプロシージャ内で必要な情報はプロセスを跨いで有効な方法で持っている必要がある。
0207187
2006/07/07(金) 23:02:13つまりDLLからのメッセージを受信するSDIアプリと同じスレッドにいるDLL以外は
hWndが初期化されてないので、DLLが変なハンドルに宛ててSendMessage()してた
ということなんですね。
システムフック掛けただけでDLLのスレッドがどっと増えるというイメージも
まだなんだか良くわからないけど、またこつこつと勉強していきます。
いろいろと教えて頂きありがとうございました。
0208デフォルトの名無しさん
2006/07/08(土) 00:50:42そこまで勘ぐらなくてもwww
相手にとって役に立つかどうか知らんけど、
自由気ままに答えればいいんじゃん。
>>192
俺もちょっと知りたかったりする。と思ったらURLマリガトー>>203 >>205
0209189
2006/07/08(土) 02:09:52WM_LBUTTONDOWNはボタンコントロールを押している間は発行されないみたいなんです。
たくさんのボタンで押しっぱなしと離した場合を分けたいので、適当なところでクリック、
ではダメなんです。
0210デフォルトの名無しさん
2006/07/08(土) 02:26:23なら氏ねよ。
0211デフォルトの名無しさん
2006/07/08(土) 02:35:300212デフォルトの名無しさん
2006/07/08(土) 04:19:170213デフォルトの名無しさん
2006/07/08(土) 06:26:42WH_KEYBOARDをフックしてlParamを調べると幸せかも
0214デフォルトの名無しさん
2006/07/08(土) 06:29:58ごめん間違えたw
マウスじゃフックしてもだめだな、
自分で何クリックしたか覚えとけば良いんじゃ?
0215デフォルトの名無しさん
2006/07/08(土) 09:12:07サブクラス化
0216デフォルトの名無しさん
2006/07/08(土) 12:25:17hEditBox = CreateWindow(
TEXT("EDIT"), TEXT(""),
WS_DLGFRAME | WS_CHILD | WS_VISIBLE |
WS_TABSTOP | ES_AUTOHSCROLL | ES_LEFT,
170, 50, 500, 25, hWnd, (HMENU)EDIT_ID,
((LPCREATESTRUCT)(lParam))->hInstance, NULL
);
/* 実行ボタン作成 */
hActBtn = CreateWindow(
TEXT("BUTTOn"), TEXT("実行"), WS_CHILD | WS_VISIBLE |
BS_DEFPUSHBUTTON | WS_TABSTOP,
170, 100, 50, 30, hWnd, (HMENU)ACT_ID,
((LPCREATESTRUCT)(lParam))->hInstance, NULL
);
この二つのコントロールを作成したときTABキーでフォーカスを移動できるようにしたいんですが、
WS_TABSTOPを指定してもうまくTABキーでフォーカスが移動してくれません。
WMでキー情報取得してそれがTABキーならフォーカス移動でもいいんですが、それは何か面白くないので
なんとかならないでしょうか?
0218デフォルトの名無しさん
2006/07/08(土) 12:40:30そこまでわかってたらぐぐってソースコピペすれば動くと思う。
0219デフォルトの名無しさん
2006/07/08(土) 13:05:46IsDialogMessage ?
0220デフォルトの名無しさん
2006/07/08(土) 13:08:27なぜかドラッグになったりして・・・
かと言ってペイントブラシ上でお絵かきさせても飛び飛びになる。
思い切り間隔開けると(100msくらい)ボタンにも反応するけど、
もちっと早くならんかな。
0221デフォルトの名無しさん
2006/07/08(土) 13:12:37>>219
ダイアログにはしてないんだよ。
とりあえずコードはこんな感じに
コメント適当だから逆に見にくいかもしれない
できねぇ
0226デフォルトの名無しさん
2006/07/08(土) 14:04:35ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/deleteurlcacheentry.asp
0227デフォルトの名無しさん
2006/07/08(土) 14:34:28>>219 で正解
022846
2006/07/08(土) 19:46:16sub1〜ですが、いい名前が思いつかないのです。捨てルーチンなのでいいんじゃないか、と思ったのですが・・・
>>48
・・・AddRef()/Release()、間抜けでした・・・ハズカシ・・・
修正しました。今度は大丈夫かと・・・↓
WBC002.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
>>50
>http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html
やっぱりありますか・・・どっかにはあるだろうとは思ってましたが・・・これが見つけられていれば・・・
・・・オレの費やした2週間って・・・OrZ
タブ巡回ですが、自作コントロールではSetWindowLong()で直接WS_EX_CONTROLPARENTに設定し、IsDialogMessage(g_hWndMain)する事でできました。
(でも窓APIをじかに使うのが正しいのかどうかわからない・・・)
が、WebBrowserはやっぱりできない・・・WebBrowserの場合はそもそも各HTML要素はウィンドウではないのでSetFocus()することさえできない・・・
・・・今度はActiveXコントロールをSDKレベルで作ってみようかと思ったんだけど、やっぱりどっかにありますよね・・・OrZ
0229デフォルトの名無しさん
2006/07/08(土) 21:03:330230デフォルトの名無しさん
2006/07/08(土) 21:10:300231デフォルトの名無しさん
2006/07/08(土) 21:19:010232デフォルトの名無しさん
2006/07/08(土) 21:19:140233220
2006/07/08(土) 23:49:30間違ってWM_LBUTTONDOWNとか送ってたよ、テヘッ (*´∀`*)
0234デフォルトの名無しさん
2006/07/09(日) 03:37:26WM_KEYFIRST 〜 WM_KEYLASTに対して
IOleInPlaceActiveObject::TranslateAccelerator()
IOleInPlaceActiveObjectはWebBrowser2からQueryInterface。
これで、TABキーとかその他のキーボードショートカット使えるはず。
私が昔作った時はこれでいけた。
0235デフォルトの名無しさん
2006/07/09(日) 08:46:41メッセージループの中で、TranslateAcceleratorでS_OKが返って来たら
アクセラレータが変換されたということなので、
それ以降のTranslateMessageやDispatchMessageは実行してはいけない。
0236228
2006/07/09(日) 10:02:02WBC002.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
http://winscript.s41.xrea.com/upload/source/No_0016.lzh
0237デフォルトの名無しさん
2006/07/09(日) 11:08:10BGMにMIDIを使いたいんですが
・リソースから読み込み
・ループ再生
・非ループで1曲演奏し、それの終了を知りたい
などはどうすれば良いのでしょうか。
0238デフォルトの名無しさん
2006/07/09(日) 11:14:100239デフォルトの名無しさん
2006/07/09(日) 11:24:12一番上はIGraphBuilderで簡単なの書いたことしかないから知らん。
残りはDirectShowのIMediaEventで可能。
0240デフォルトの名無しさん
2006/07/09(日) 11:31:130241デフォルトの名無しさん
2006/07/09(日) 12:37:18DirectShowの使い方がいまいちよくわからず、
何とか再生することはできたのですが
ただ再生するだけならMCIの方が簡単かな、と思いました。
何か相違点などあるのでしょうか
0242デフォルトの名無しさん
2006/07/09(日) 12:40:49細かく制御したいなら
midiOut〜系関数を使うとか
0243デフォルトの名無しさん
2006/07/09(日) 12:48:12ので DirectX お勧め。
0244デフォルトの名無しさん
2006/07/09(日) 12:53:00内部で何かやってるんだろうか
ひょっとして別スレッド作って再生してなかったとか?
0245デフォルトの名無しさん
2006/07/09(日) 13:50:45どこかでウィンドウの大きさのリージョンを毎回セットしなおしてるんでしょうか
それとも長方形ブラシかなんかで領域を塗ってマウスの左クリックが離れたら
その大きさをリージョンにセットしてるんでしょうか
今タイトルバーやウィンドウやメニューのインターフェースを自前で作ろうとしてて
ビットマップから不定形のウィンドウを作成したまではいいんですが、
不定形のウィンドウのサイズを変更しようと思ってもどうやっていいかさっぱりです。
0246デフォルトの名無しさん
2006/07/09(日) 15:26:45WM_SIZEきたらリージョン再作成かな。
でも、リージョン再作成の処理によっては激しく重いかもしらん。
0247231
2006/07/11(火) 00:22:530248デフォルトの名無しさん
2006/07/11(火) 10:16:07GetVolumeInformation()を使ってディスクのボリュームのシリアル番号を確認する方法を採用しました。
問題なく動いていたのですが、
そのアプリを他の二つのアプリ(BとC)から、数秒にに一回くらいの割合で、CreateProcess()使って
数百回呼び出したところ、そのうち数回くらい、GetVolumeInformation()がエラーしました。
こんな感じです。
アプリC → アプリB →アプリA (GetVolumeInformationエラーした)
実は、それは特定のパソコンで3回だけ連続して発生し、今は起こらなくなってしまったのです。
でも確かにエラーしたのを確認しましたし、自然に治るのも気持ち悪いので、どこかに何か問題が
あるように思うんですが、皆さん何か心当たりとかありませんでしょうか?
よろしく。
0249デフォルトの名無しさん
2006/07/11(火) 10:24:240250デフォルトの名無しさん
2006/07/11(火) 10:27:29ありがとうございます。
具体的には、GetVolumeInformation()がエラーを意味する0を返しました。
それしか分かっていません。
0251デフォルトの名無しさん
2006/07/11(火) 11:08:420252デフォルトの名無しさん
2006/07/11(火) 11:39:55任意のアプリケーションが起動したことを知るにはどうしたらよいでしょうか?
あるアプリを起動させておき、ターゲットアプリが起動したらアクションを起こしたいのですが。。
よろしくお願いいたします。
0253デフォルトの名無しさん
2006/07/11(火) 11:59:17フックでもすればいいのでは?
0254デフォルトの名無しさん
2006/07/11(火) 12:07:17ターゲットアプリが起動していなければ待機し、
起動したらフックをかけるアプリを作成したいのです。
まだフックについて勉強不足ですが、それもフックで可能なのでしょうか?
0255デフォルトの名無しさん
2006/07/11(火) 13:13:040256デフォルトの名無しさん
2006/07/11(火) 13:15:51出来る
0257254
2006/07/11(火) 13:53:21ヒントいただけないでしょうか・・・?
ターゲットアプリが起動していない状態でフックをかけるということでしょうか?
起動していないとできないと思ったのですが。。。
0258デフォルトの名無しさん
2006/07/11(火) 14:04:580259デフォルトの名無しさん
2006/07/11(火) 14:44:120260デフォルトの名無しさん
2006/07/11(火) 14:47:440261デフォルトの名無しさん
2006/07/11(火) 14:52:360262254
2006/07/11(火) 15:10:14フックはWH_CALLWNDPROCです
0263デフォルトの名無しさん
2006/07/11(火) 15:15:51グローバルフック
0264254
2006/07/11(火) 17:00:41ありがとうございました
0265254
2006/07/11(火) 17:39:57起動したウィンドウがターゲットプログラムのときにTSK_CREATEを
作成アプリに通知し、作成アプリ側で受け取って操作できるようにしました。
WH_CBTフックのプロシージャ
LRESULT CALLBACK MySysHookWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode == HCBT_CREATEWND){
CBT_CREATEWND *pcw = (CBT_CREATEWND *)lParam;
if(pcw->lpcs->lpszClass == TARGET_CLASS_NAME){
SendMessage(g_hCallExe, TSK_CREATE, 0, 0);
}
return 0;
}
return CallNextHookEx(g_hSysHook, nCode, wParam, lParam); //次のフックを呼ぶ
}
アプリ側
switch(msg){
case TSK_CREATE:
MessageBox(hWnd, "起動しました", "", MB_OK);
break;
}
しかし、これで実行するとターゲットプログラムの起動前にメッセージボックスの発生が
無限ループになり、作成アプリを強制終了しないとターゲットプログラムが起動しませんでした。
TSK_CREATEを一回だけ通知し、ターゲットプログラムを起動するにはどうしたらよいのでしょうか?
よろしくお願いします。
0266デフォルトの名無しさん
2006/07/11(火) 19:30:03WH_CBTフック
Windowsは、 次に示す処理を行う前に、 WH_CBTフック プロシージャを呼び出す。
・ウィンドウのアクティブ化、 作成、 破棄、 最大化、 アイコン化、 移動、 サイズ変更
・システム メッセージ キューからのマウス イベントやキーボード イベントの削除
・入力フォーカスの設定
・システム メッセージ キューの同期化
あなたのコーディングでは、無限ループになります。
TSK_CREATEをキャッチして "MessageBox" を呼び出す。
その "MessageBox" のアクティブ化をキャッチして "TSK_CREATE" を発行。
TSK_CREATEをキャッチして "MessageBox" を呼び出す。
よって、"MessageBox" では無く、自前で簡単なロギングウィンドウを作成し
そのウィンドウに処理状況を出力する。
0267デフォルトの名無しさん
2006/07/11(火) 19:31:49ロギングウィンドウは事前に作成しておく。
0268254
2006/07/11(火) 20:52:26レスありがとうございます。
if(nCode == HCBT_CREATEWND)
で、ウィンドウの作成に限定し
if(pcw->lpcs->lpszClass == TARGET_CLASS_NAME)
で、作成されたプロセスのクラスが起動を確認したいアプリのクラスと同じか確認して
TSK_CREATEの発行をターゲットアプリが起動したときに限定しているつもりだったのですが、
これでもMessageBoxのアクティブ化時にTSK_CREATEが発行されるのでしょうか?
0269デフォルトの名無しさん
2006/07/11(火) 21:01:53はlstrcmp()使わなくて良いのか?
0270デフォルトの名無しさん
2006/07/11(火) 21:03:49この辺参照して↓
アトムなら文字列にしてから比較した方がいい。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B106079
0271デフォルトの名無しさん
2006/07/11(火) 21:18:55趣味でWebカメラのプログラミングを始めました。
現在傍らにある本は「ロボットの目をつくる」というトランジスタ技術の増刊号です。
この本でパン、チルト機能がついたQCamOrbitというWebカメラのプログラムが公開されており、それに挑戦していま
す。
それを参考にVisualCとOpenCVでカメラから画像を取得して処理をするところまでは出来ました。
しかしカメラを動かすところについては「あとは出来るでしょ」といった感じで省略されていました。
残念ながらボクの力では動かすことは出来ませんでした。
一週間ほど検索していましたが、とっかかりすら掴めない有様です。
最後の砦だとここにすがりつきに参りました。
どうかヒントだけでも、宜しくお願いします。
雑誌にはドライバに機能が用意されている、という記述がありました。
今はドライバが入っているCDを中心にあたっています。
目的 Webカメラをパン、チルトさせたい
環境 Windows2000
VisualC++ 6.0
QcamOrbit
0272デフォルトの名無しさん
2006/07/11(火) 21:27:46http://www.vector.co.jp/soft/winnt/hardware/se383160.html
0273271
2006/07/11(火) 21:32:35すばやい返信ありがとうございます。
しかし、残念ながらこのプログラムは私の環境では動かなかったのです。
具体的にはDevice番号が(本来は自動取得のはずなのに)取得できませんでした。
動かなくても、このソースを解読して知識を深めるべきでしょうか?
0274271
2006/07/11(火) 21:39:04このプロジェクトにはioctl2.hというヘッダファイルが入っておらず、
自分のPCではコンパイルできませんでした。
これらの話も最初の質問時にすべきでした、もうしわけありません。
0275デフォルトの名無しさん
2006/07/11(火) 21:49:17ドライバがちゃんとインストールされていなければ、それほど参考にならないかもしれません。
(デバイスドライバをCreateFileで開いてDeviceIoControlで制御、という流れは参考になるかもしれませんが)
雑誌にドライバが付いてきているなら、そちらに戻ってみるのが良いと思います。
0276デフォルトの名無しさん
2006/07/11(火) 21:59:11ioctl2.h の内容は、vbの方を読むとこんなところでしょう。
#define IOCTL_BULKUSB_VENDORREQUEST_OUT 0x220014
#define CTL_DEVICE_NAME_ASCII "\\\\.\\filtCtlp"
#define URB_FUNCTION_VENDOR_DEVICE 0x17
typedef struct _PARAM_VENDOR_REQUEST
{
DWORD Function;
DWORD TransferFlags;
BYTE ReservedBits;
BYTE Request;
DWORD Value;
DWORD Index;
BYTE Dummy[2];
} PARAM_VENDOR_REQUEST;
#define MAX_BUFSIZE_BULK (1024 + 100)
typedef _PARAM_VENDOR_REQUEST_WRITE
{
DWORD Function;
DWORD TransferFlags;
BYTE ReservedBits;
BYTE Request;
DWORD Value;
DWORD Index;
BYTE Dummy[2];
BYTE buf[MAX_BUFSIZE_BULK];
} PARAM_VENDOR_REQUEST_WRITE;
0277271
2006/07/11(火) 22:09:12う〜ん、一応カメラは繋いだ状態でインストールしたつもりなのですが。
なにか不備があったかのも知れません。
しかし流れは参考になるかも知れませんが、という一文だけでもずいぶん参考になります。
すこし読む気がでてきました、ありがとうございます。
>>276
ありがとうございます。
なんとなく読んで内容を書けてしまうなんて凄いですね。
ちなみに無謀にも何も考えずこぴぺして実行したところエラーが出てしまいました。
(構文エラーが1,2個あるといった程度な気もしますが)
参考にさせてもらいます。
0278デフォルトの名無しさん
2006/07/11(火) 22:48:03まあがんがれ
ただ微妙にスレ違いな話題なので他の場所に
移動した方がよい鴨試練
0279デフォルトの名無しさん
2006/07/12(水) 11:22:35IMEの状態(漢字モードON又は漢字モードOFF)を
取得する方法を教えて下さい。
0280デフォルトの名無しさん
2006/07/12(水) 11:24:00http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html
0281279 ◆lnkYxlAbaw
2006/07/12(水) 11:54:39いっぱいあるね、どりですか?
0282デフォルトの名無しさん
2006/07/12(水) 12:23:20全部書いてあるのに、何故たずねる?
0283279 ◆lnkYxlAbaw
2006/07/12(水) 12:43:00構ってほしいから。
0284254
2006/07/12(水) 14:01:48>>270
if(nCode == HCBT_CREATEWND)
{
CBT_CREATEWND *pcw = (CBT_CREATEWND *)lParam;
GetAtomName(LOWORD(pcw->lpcs->lpszClass), szBuf, 10);
if(!(strcmp(szBuf, "ClassName")))
{
PostMessage(g_hCallExe, TSK_CREATE, wParam, 0);
return 0;
}
}
とすることで望みどおりの動作をさせることができました
ありがとうございました
0285デフォルトの名無しさん
2006/07/12(水) 15:34:54LayeredWindowをWMP等動画を再生してるウィンドウの上へ持って行くと、どうしてもちらついてしまいます・・・orz
(オーバレイモードだと大丈夫なようです。)
ソースはttp://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.phpとほぼ同等です。
どなた様かご教授よろしくお願いいたします。。
0286285
2006/07/12(水) 15:53:48・フォームはTopMost=trueにしております。
・"ビデオミキシンクレンダを使う"のチェックを外しても、ちらつきが無くなるようです。
0287デフォルトの名無しさん
2006/07/12(水) 15:54:53どうにもならないので Vista を待ってください。
0288デフォルトの名無しさん
2006/07/12(水) 18:47:55BMP画像を表示させるアプリケーションを作っています。
Borland C++ Compiler 5.5 でコンパイルしたところ、
リソースファイルで指定したビットマップのファイルが1Mを越えたあたりで
コンパイルエラーで実行ファイルが作成できません。
指定ファイルの上限などあるのでしょうか。
初心者で、説明がわかりにくいところもあるかと思います。
どうぞよろしくおねがいいたします。
0289デフォルトの名無しさん
2006/07/12(水) 20:47:140290デフォルトの名無しさん
2006/07/12(水) 20:49:270291デフォルトの名無しさん
2006/07/12(水) 21:19:25自分の最高は768kbだが、そこまでは大丈夫だろう。
0292288
2006/07/12(水) 21:30:00どうもすみません。
BCC32 -W test.c
は問題ありません。
そのあと
BRC32 test
をすると
「
Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
」
とコマンドプロンプトに表示された後、
「問題が発生したため、Turbo Incremental Linker を終了します。 ご不便をおかけして申し訳ありません。」
という画面がでてきます。(エラー報告を送信する・送信しないというボタンのある画面です)
送信しないをクリックするとコマンドプロンプトの画面に戻り
「** error 1 ** deleting kaw70.exe
d:\docs\mydoc\cfile>
」
とコマンドプロンプトに表示されます。
つづく
0293288
2006/07/12(水) 21:30:34test.rc の中身
///
Oth1 BITMAP "4.bmp"
Oth2 BITMAP "5.bmp"
Oth3 BITMAP "6.bmp"
Oth4 BITMAP "7.bmp"
Aug BITMAP "8.bmp"
Sep BITMAP "9.bmp"
Oct BITMAP "10.bmp"
Nov BITMAP "11.bmp"
Dec BITMAP "12.bmp"
///
↑だとエラー
///
Oth3 BITMAP "6.bmp"
Oth4 BITMAP "7.bmp"
Aug BITMAP "8.bmp"
Sep BITMAP "9.bmp"
Oct BITMAP "10.bmp"
Nov BITMAP "11.bmp"
Dec BITMAP "12.bmp"
///
↑だとエラーは出ず、test.exeが作成されます。
というながれです。
ながくてすみませんが、よろしくおねがいします。
0294デフォルトの名無しさん
2006/07/12(水) 22:14:32コンパイラの問題みたいだし、スレ違いっぽいけど。
0295デフォルトの名無しさん
2006/07/12(水) 22:18:32それリンカが異常終了してんじゃん?
このスレでわかる人がいればいいけど。
・環境依存の話なのでBCCのスレで聞く
・リンカのバグフィックスされたバージョンを使う
ことをおすすめする。
0296288
2006/07/12(水) 22:38:28BCCのスレで質問してみます。
0297285
2006/07/12(水) 22:54:12レスありがとうございます。
OSの問題という事でしょうか。。
微妙に話変わりますが、SetLayeredWindowAttributesでフォーム切り抜きをしてもちらつくんですね。
LayeredWindowはこういう仕様なのかな・・・。
あるアプリでは、画像をある色で透過させてちらつき皆無で画面に表示させていましたが、
SetWindowRgnでやってたんですかね?
0298デフォルトの名無しさん
2006/07/12(水) 23:17:000300デフォルトの名無しさん
2006/07/13(木) 01:16:29これはコモンコントロールとしてサポートされてる機能でしょうか?
もしそうであれば、どういう手順で表示するのでしょう?
0301デフォルトの名無しさん
2006/07/13(木) 01:35:160302デフォルトの名無しさん
2006/07/13(木) 01:42:27ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/header/header.asp
0303デフォルトの名無しさん
2006/07/13(木) 12:44:53ファイルを開くダイアログボックスを出すところまでは出来ているんですが、
ダイアログボックスのハンドルの取得の仕方が分かりません。
検索してもなかなか分からなかったので、
どうかお教え下さい。
0304デフォルトの名無しさん
2006/07/13(木) 12:50:350305デフォルトの名無しさん
2006/07/13(木) 12:50:430306デフォルトの名無しさん
2006/07/13(木) 12:52:41メモ帳だったら、コマンドラインでいけなくない?
0307デフォルトの名無しさん
2006/07/13(木) 12:57:43このスレ的に回答すると ShellExecute() って所か?
どちらにしろ、やり方が間違ってると思われ。
0308デフォルトの名無しさん
2006/07/13(木) 13:02:47将来的にアプリケーションを自動的に操作したい思っていまして、
これはあくまで練習用です。説明が足りなかったですね…
もう少し詳しく言うとCreateProcess()で起動させたプロセスに、
SendMessage()などを使用してメッセージを投げるというような形で、
処理を実現させようと考えているのですが、
まぁ要はダイアログのハンドルを取得するAPIはあるのかなと。
逆の場合だったらGetParent()を使うみたいですが。
0309デフォルトの名無しさん
2006/07/13(木) 13:06:450310デフォルトの名無しさん
2006/07/13(木) 13:07:24どの辺りが間違っているのか、詳しくお聞かせ願えないでしょうか?
細かい部分の処理なのか、それとも自動化のアプローチ自体なのか。
0311デフォルトの名無しさん
2006/07/13(木) 13:13:04その方法で解決出来るような気がしてきました。
皆様どうもありがとうございました。
0312デフォルトの名無しさん
2006/07/13(木) 17:11:250313デフォルトの名無しさん
2006/07/13(木) 19:20:04表示された時点で成功なんじゃ?
0314デフォルトの名無しさん
2006/07/13(木) 21:22:06http://news19.2ch.net/test/read.cgi/newsplus/1152788480/
0315デフォルトの名無しさん
2006/07/13(木) 22:39:35いや、だからダイアログ操作するとかは練習用なんでしょ?
実際は別のことをやりたいんじゃね?
0316デフォルトの名無しさん
2006/07/14(金) 01:48:34int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PTSTR pszCmdLine, nCmdLine)
↓
int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int)
VC ExpressのIDE上でコンパイルしたところ、確かにコンパイルが通ります。
しかし、まったく同じソースを、コマンドライン(cl.exe)でコンパイルしたところ、
エラーになってしまいます。以下がログメッセージです。
>error C2055: 型リストではなく、仮パラメータ リストが必要です。
これは何が原因なんでしょうか?
0317デフォルトの名無しさん
2006/07/14(金) 01:58:44引数の名前を省略できるのは言語仕様だからスレ違いだと思うが。
0318デフォルトの名無しさん
2006/07/14(金) 03:25:38SYSTEMTIME構造体に入っている時刻をn分進めたり、戻したり、また、n日進めたり、戻したりするAPIはありますでしょうか?
ない場合、何か利用できるものはありませんでしょうか?C++のライブラリ(MFCとか)とかでもかまいません。
使用環境はVS2003です。
0319デフォルトの名無しさん
2006/07/14(金) 04:31:47新しいフォルダを作成ボタンにIDOK,IDCANCELみたいなコントロールの識別子割り当てられてますか?
0320デフォルトの名無しさん
2006/07/14(金) 04:33:28MSDN嫁。
SYSTEMTIME構造体のメンバを使って時間を足し引きするのはお勧めしないと書いてある。
・SYSTEMTIMEをFILETIMEに変換する(SystemTimeToFileTime()を使う)
・FILETIMEをULARGE_INTEGERにコピーする
FILETIMEを直接足し引きするのもお勧めできない。X86だと問題なく動くだろうけど。
・ULARGE_INTEGERを使って、時間の足し引きをする(単位は100ナノ秒)
・ULARGE_INTEGERをFILETIMEにコピーする
・FileTimeToSystemTime()で、SYSTEMTIMEに直す
0321318
2006/07/14(金) 08:31:44レス、ありが�d。
↓こんな感じでいいのでしょうか?
SYSTEMTIME stime; FILETIME ftime; ULARGE_INTEGER ulint;
GetLocalTime(&stime);
SystemTimeToFileTime(&stime, &ftime);
ulint = ftime; // or ulint.LowPart = ftime.dwLowDateTime; ulint.HighPart = ftime.dwHighDateTime;
ulint.QuadPart += 10 * 1000 * 60 * 20; //20分進める。
ftime = ulint; // or ftime.dwLowDateTime = ulint.LowPart; ftime.dwHighDateTime = ulint.HighPart;
FileTimeToSystemTime(&ftime, &stime);
> MSDN嫁。
失礼。かなり読んだのですが、ここまでたどり着けませんですた。
> SYSTEMTIME構造体のメンバを使って時間を足し引きするのはお勧めしないと書いてある。
お薦めしない理由を知ってたら、だれか解説キボン。
0322デフォルトの名無しさん
2006/07/14(金) 09:25:460323デフォルトの名無しさん
2006/07/14(金) 13:08:091) 起動時に/wオプションをつけた場合はウィンドウ表示
2) つけなかった場合は、起動したコマンドプロンプトを対象にcin/coutで入出力
ということをしたいのですが、方法がわかりません。
ウィンドウアプリとして作成し、AllocConsole() APIを使用した場合、
新たにコンソールウィンドウが生成されてしまいます。
また、リダイレクトでの入力(cinでの入力)が使えません。
作成しているプログラムをprog.exeとすると、例えば
C:\> dir | prog.exe /w
↑このようにしたとき、dirの標準出力をprog.exeで読みつつウィンドウ表示もしたい。
C:\> prog.exe
Sample Program v1.0......
...
↑このように/wなしのときは通常のコンソールアプリのように実行してほしい。
0324デフォルトの名無しさん
2006/07/14(金) 13:24:46FILETIMEは以前memcmpで比較しようとして正しい結果が得られないで何故か悩んだ結果、宣言が下位、上位の順で並んでるからという結論に至った。
実際は、桁あふれ等を考慮しつつ自分で書かなきゃいけなくて場合分けがめんどくさいからお薦めしないだけ、もしくは仕様変えても文句いうなよ、っていう脅しだと思う。
0325デフォルトの名無しさん
2006/07/14(金) 14:53:27GetStdHandle()
0326デフォルトの名無しさん
2006/07/14(金) 14:55:08http://www.microsoft.com/japan/msdn/accessibility/general/atg_consoleaccessibility.aspx
0327デフォルトの名無しさん
2006/07/14(金) 14:57:32ちょっと話題から外れるけど参考までにこちらも
http://support.microsoft.com/default.aspx?scid=kb;JA;190351
0329デフォルトの名無しさん
2006/07/14(金) 17:02:48C++では仮引数名を省略でき、Cではできない。
VC++のIDEでプロジェクトを作るとデフォルトでは拡張子cのファイルも
C++としてコンパイルするようオプションが指定されている、/TPか何か。
>>321>>324
320の書き方からしてアラインメントの問題だろう。
0330デフォルトの名無しさん
2006/07/14(金) 18:56:40FtpFindFirstFile,FtpFindNextFile関数ではファイル名・サイズ・最終更新日などしか取得できません。
他に、パーミッション・オーナー名・グループ名などの情報も取得したいのですが、
どのようにしたら良いのでしょうか?
言語はVB6です。よろしくお願い致します。
0331デフォルトの名無しさん
2006/07/14(金) 19:16:440332デフォルトの名無しさん
2006/07/14(金) 19:33:16サーバはUNIX(AIXだったかな?)のみです
ls -al コマンドで表示される情報が取得できれば良いのですが...
0333デフォルトの名無しさん
2006/07/14(金) 19:33:330334デフォルトの名無しさん
2006/07/14(金) 21:52:350335デフォルトの名無しさん
2006/07/14(金) 22:18:260336デフォルトの名無しさん
2006/07/14(金) 22:19:360337デフォルトの名無しさん
2006/07/14(金) 22:27:140338デフォルトの名無しさん
2006/07/14(金) 22:28:030339デフォルトの名無しさん
2006/07/14(金) 22:54:240340デフォルトの名無しさん
2006/07/14(金) 23:14:15とりあえずこんな感じで
0341デフォルトの名無しさん
2006/07/15(土) 05:18:15WindowProcを取得する方法ってないですか?
0342デフォルトの名無しさん
2006/07/15(土) 07:08:37だったら無理だと思う。
0343デフォルトの名無しさん
2006/07/15(土) 07:29:09ただ2重3重にサブクラス化されていたら341はどうしたいのかが問題だ。
0344デフォルトの名無しさん
2006/07/15(土) 09:36:00DefaultWindowProc
0345デフォルトの名無しさん
2006/07/15(土) 17:45:170346デフォルトの名無しさん
2006/07/15(土) 18:43:290347デフォルトの名無しさん
2006/07/15(土) 18:52:440348デフォルトの名無しさん
2006/07/15(土) 19:28:21WBC003.LZH:SDKレベルでWebBrowserコントロールを使用して簡易ブラウザを作るサンプル(C++)
http://winscript.s41.xrea.com/upload/source/No_0019.lzh
ですがこれが完全に正しいやり方なのか確信が持てません。みなさんはどう思われますか? 窓API的におかしい所ないでしょうか? (でも結局自作コントロールでは通用せず・・・)
g_pOleInPlaceActiveObject->OnFrameWindowActivate(TRUE);
g_pOleInPlaceActiveObject->OnDocWindowActivate(TRUE);
for(;;)
{
if (!IsWindow(g_hWndMain))
{
break;
}
GetMessageA(&msg, NULL, 0, 0);
hr = g_pOleInPlaceActiveObject->TranslateAccelerator(&msg);
if (hr == S_OK)
{
DispatchMessageA(&msg);
}
else if (hr == S_FALSE)
{
if (!IsDialogMessageA(g_hWndMain, &msg))
{
TranslateMessage(&msg);
DispatchMessageA(&msg);
}
}
}
なお、IsWindow()でループ脱出するのは気にしないでください(^^;)DefWindowProc使ってるのでこうなるのです。
ここはGetMessage()==FALSEで判断されているのだと思って下さい(^^;;;)いずれウィンドウプロシージャは設置するつもりです。
で、OnFrameWindowActivate/OnDocWindowActivate()は、本当はウィンドウプロシージャのWM_ACTIVATE中で呼び出し、ステートに応じてTRUE/FALSEするのが正しいと思うのですが、なぜこれをコントロールに通知しなければならないのでしょうか?
例えばアニメーションを表示するコントロールとかで非アクティブになった時にアニメを停止するとか?
0349デフォルトの名無しさん
2006/07/16(日) 16:05:38w2kで/dev/randomのようなPRNG(疑似乱数生成器)は利用できますか?
0350デフォルトの名無しさん
2006/07/16(日) 18:01:23ヒント: Crypto API
0351デフォルトの名無しさん
2006/07/16(日) 18:57:05マジ�d
CryptGenRandom()発見!
0352デフォルトの名無しさん
2006/07/16(日) 20:03:11WindowsSocketに使われてる関数 たとえば、connect()関数の中に
const struct sockaddr FAR * name だとか
const char FAR * aptval と書いてあるのですが、
FAR* って何の意味があるのでしょうか?
定義を調べてみたところ
#define FAR far
#define far
と書いてありました。特に意味がないように感じるのですが、なぜ付いているのでしょうか?
0353デフォルトの名無しさん
2006/07/16(日) 20:04:540354デフォルトの名無しさん
2006/07/16(日) 20:07:140355デフォルトの名無しさん
2006/07/16(日) 23:08:54ビットマップのまま転送すると重たいので、
jpegなど、何らかの形で圧縮して転送しようと思います。
色々検索してるのですが、以下の条件にあうやり方が見つからなくて困ってます。
何かよい方法ありませんか?
1."できるだけ"windows標準のライブラリだけで作りたい。
(dll置くだけインストールできるようなライブラリなら使っても良いかもです)
2.メモリ上で圧縮、展開を行いたい。ハードディスクは仲介したくない。
0356デフォルトの名無しさん
2006/07/16(日) 23:15:020357デフォルトの名無しさん
2006/07/16(日) 23:29:32Windowsつってもバージョンで相当変わるわけだが。
Gdiplus使っていいならpngでもjpgでも何でもどうぞ。
0358デフォルトの名無しさん
2006/07/17(月) 00:12:25Gdiplusってwindows2000にインストールできましたっけ?
できれば、XPと2000で動かしたいんで。
0359デフォルトの名無しさん
2006/07/17(月) 00:16:20インストールは出来るけどデフォでは付いてない。
再配布版gdiplus.dllを添付すれば2kもXPもOKな筈。
0360デフォルトの名無しさん
2006/07/17(月) 00:19:06ちょっとやってみます。
0361デフォルトの名無しさん
2006/07/17(月) 01:10:10GetPixel()関数で取得したいと思ったのですが、できませんでした。
調べてみると、どうも映像がビデオレンダラーというハンドル(?)に関連していることが
原因のようです。
どうすればイイでしょうか?
0362デフォルトの名無しさん
2006/07/17(月) 02:30:48ビデオカードか何かのオーバーレイ機能だよな。多分。
0363デフォルトの名無しさん
2006/07/17(月) 02:34:00それとも他の関数でも失敗するかね?
0364デフォルトの名無しさん
2006/07/17(月) 08:14:03オーバーレイ表示になってると思うからGetPixelじゃ無理だとおもう。
DirectShowのインタフェース取れるならISampleGrabberインタフェースで画像は取れるみたいだけど他のアプリだと‥‥
0365デフォルトの名無しさん
2006/07/17(月) 08:22:55WM_の中に有るかも、だけどWM_多すぎorz
0366デフォルトの名無しさん
2006/07/17(月) 09:13:49意味がわからない。「USBデバイスが接続された時」?
0367デフォルトの名無しさん
2006/07/17(月) 11:07:40検索語句が悪いのかな。
USBが接続された時、タスクバーの所に「○○が接続されました」みたいな
メッセージが出ますよね。だからAPIか何かで
そのタイミングを捕まえることができないのかなと。
0368デフォルトの名無しさん
2006/07/17(月) 11:14:010369デフォルトの名無しさん
2006/07/17(月) 11:15:490371デフォルトの名無しさん
2006/07/17(月) 15:38:40動画なんかでPrintScreenキーが使えないという話も、結局根は同じなんだろうな。
0372デフォルトの名無しさん
2006/07/17(月) 17:27:480373デフォルトの名無しさん
2006/07/17(月) 19:30:32出来るものもある
0374デフォルトの名無しさん
2006/07/17(月) 23:12:27プログラムはほぼ出来たのですが、一点不可解なことが残っています。
サブメニューを持った項目の右横にある小さい三角のマークが、
Windows側で描画されているようです。それはいいのですが、
サブメニューをGRAYED状態にしてもマークがマウスの移動を
感知して白黒反転してしまいます。
オーナードローをしなければサブメニュー項目をGRAYEDに
すると、三角マークもグレーに固定されます。
オーナードローを使ったときに、サブメニューを持った項目
のGRAYED状態を3角マークにも反映させる方法を教えてください。
ご存知の方、よろしくお願い致します。
0375デフォルトの名無しさん
2006/07/18(火) 01:24:160376デフォルトの名無しさん
2006/07/18(火) 01:41:17見れるけど
0377デフォルトの名無しさん
2006/07/18(火) 03:38:150378仕様書無しさん
2006/07/18(火) 04:44:24ネットワークで他のマシンに転送して表示させたいのですが、
CImageに設定されている生データ(PNG形式)を取得、設定する方法を
msdnで見つけられなくて困っています。
誰かご存知ないでしょうか?
0379仕様書無しさん
2006/07/18(火) 04:51:04ttp://msdn2.microsoft.com/ja-JP/library/
>378
CImageクラスは、ファイルから読み込んだ画像を元の画像形式とは無関係
にビットマップ形式で保存しているので、PNGでの取得はムリ。
0380デフォルトの名無しさん
2006/07/18(火) 18:12:11馬鹿な俺に教えてくだされ
どう巡ったらツリービューからAPIリファレンスに辿り着くの?
0381デフォルトの名無しさん
2006/07/18(火) 18:46:48Win32およびCOM開発の下なんだけど、今見たらMSDN2日本語版からは消えているみたい。
こっちにはあったから、駄目だったらこっちから行ってみて。
http://msdn.microsoft.com/library/ja/
0382デフォルトの名無しさん
2006/07/18(火) 18:52:52http://msdn.microsoft.com/library/en-us/dnanchor/html/anch_win32com.asp
0383デフォルトの名無しさん
2006/07/18(火) 23:08:02IME2000では全く問題なかったのにIME2003にしたら
TranslateMessageでエラーが発生するようになってしまいました
状況は日本語入力モードでひらがなを入力し、
変換キーをおして漢字変換しようとすると
メモリ読み込みのアクセス違反エラーが発生します
変換キーを押すだけだと問題ないです
エラー時のMessageの内容
message = 256 = WM_KEYFIRST
wParam = 229 = VK_PROCESSKEY
lParam = 7929857 = ?
解決法を知ってる方、お願いします
0384デフォルトの名無しさん
2006/07/18(火) 23:31:01すまなんだ
An error occurred on the server when processing the URL.
と出るのは俺のパソの環境が悪いのかな?
0385デフォルトの名無しさん
2006/07/19(水) 00:38:58信心が足りんからじゃ!
0386デフォルトの名無しさん
2006/07/19(水) 00:57:570387デフォルトの名無しさん
2006/07/19(水) 11:44:22通常時は上手くいくのですが偶にリターン値が正常なのにも関わらず
move元ファイルが削除されておらず且つ、move先ファイルのファイルが
ロックされたままとなる場合があります
ネットワーク越しのmovefileなので動作が不安定っぽいのですが
movefileExのMOVEFILE_COPY_ALLOWEDとMOVEFILE_WRITE_THROUGHで
解決できるのでしょうか?
みなさんはネットワーク越しのファイル移動はどうやってます?
0388デフォルトの名無しさん
2006/07/19(水) 12:53:36Windows関連の役立ち情報を公開してるsysinternalsを運営してる
winternals が MS に買収されちまったyo!!
0389デフォルトの名無しさん
2006/07/19(水) 13:21:530390デフォルトの名無しさん
2006/07/19(水) 14:07:53そうなんや。いいのか悪いのかよくわからんニュースやな。
0391デフォルトの名無しさん
2006/07/19(水) 14:24:390392デフォルトの名無しさん
2006/07/19(水) 14:24:57sysinternalsサイトで公開されている各フリーソフトは十分に役立つ
ソフトが多いのだが。
今後も同じ様な形で運営が行われるのだろうか?。
公開が中止されたら非常に残念なことだと思う。
0393デフォルトの名無しさん
2006/07/19(水) 14:26:35DbgView だけでも落としておきたい。
0394デフォルトの名無しさん
2006/07/19(水) 14:56:470395デフォルトの名無しさん
2006/07/19(水) 19:07:10そりゃ大変だ。
と思ってsysinternalsのサイトを見ようとしたら、めちゃくちゃ重い。
>>392
MSが公開していない、
あるいは、OSのバージョン毎に実装を変える可能性があるので、公開すべきでないと考えている、
情報がかなりあるので、もしそうなったら残念だな。
一応ブログでは、サイトは今まで通りだし、ツールもフリーなままとは言っているけど……。
0396デフォルトの名無しさん
2006/07/19(水) 20:22:20// Win32 defines _WIN32 automatically,
// but Macintosh doesn't, so if we are using
// Win32 Functions, we must do it here
#ifdef _MAC
#ifndef _WIN32
#define _WIN32
#endif
#endif //_MAC
なんでマックに関する定義があるんですか?
win32apiってマックと何か互換性でもあるのですか?
0397デフォルトの名無しさん
2006/07/19(水) 20:26:380398デフォルトの名無しさん
2006/07/19(水) 20:28:030399デフォルトの名無しさん
2006/07/19(水) 20:52:280400デフォルトの名無しさん
2006/07/19(水) 20:57:48http://msdn.microsoft.com/archive/en-us/dnarvc/html/msdn_fromone.asp?frame=true
Macintosh: The Most Difficult Case以下に、Visual C++にはMAC用のクロスコンパイラが存在し、
それにはWin32 APIを実装したライブラリが付属しているということが書いてある。
0401デフォルトの名無しさん
2006/07/19(水) 22:31:160402デフォルトの名無しさん
2006/07/19(水) 22:42:510403デフォルトの名無しさん
2006/07/20(木) 00:02:540404仕様書無しさん
2006/07/20(木) 00:10:160405デフォルトの名無しさん
2006/07/20(木) 00:26:55http://ja.wikipedia.org/wiki/Mac_BU
0406デフォルトの名無しさん
2006/07/20(木) 00:46:400407デフォルトの名無しさん
2006/07/20(木) 12:01:47ここなら詳しい方もおられると思いますので
質問させてください。
VC8のリンクの過程で
> xxx.obj : error LNK2001: 外部シンボル ""public: virtual void * __thiscall name::type<char>::`scalar deleting destructor'(unsigned int)" (??_G?$type@D@name@@UAEPAXI@Z)" は未解決です。
> xxx.obj : error LNK2001: 外部シンボル ""public: virtual void * __thiscall name::type<char>::`vector deleting destructor'(unsigned int)" (??_E?$type@D@name@@UAEPAXI@Z)" は未解決です。
のように出力されリンクできません。
http://www.thescripts.com/forum/thread263644.html
によるとVCが勝手に作るヘルパーらしいのですが
解決方法がよく解りません。
MFCやATL等は使用していません。
ご教授お願いします。
0408デフォルトの名無しさん
2006/07/20(木) 13:08:370409デフォルトの名無しさん
2006/07/20(木) 15:13:170410デフォルトの名無しさん
2006/07/20(木) 15:35:040411デフォルトの名無しさん
2006/07/20(木) 17:13:030412デフォルトの名無しさん
2006/07/20(木) 17:50:05どうすればいいですか?
clr == GetPixel(hMChar , i , ib)じゃ駄目みたいなんですが
0413デフォルトの名無しさん
2006/07/20(木) 18:05:030414デフォルトの名無しさん
2006/07/20(木) 18:06:330415デフォルトの名無しさん
2006/07/20(木) 18:29:05許してください。悪気はなかったんです!
0416407
2006/07/20(木) 23:31:06質問、VCで抽出したのですが
見つからなかったのでここで
お願いしました。
スレ違い失礼しました。
0417デフォルトの名無しさん
2006/07/21(金) 11:35:050418デフォルトの名無しさん
2006/07/21(金) 12:08:560419デフォルトの名無しさん
2006/07/21(金) 13:37:51http://tkoolup.hp.infoseek.co.jp/cgi-bin/src/tkoolup0934.png
こうなってしまうなー
スクリプトaの1行目でNameErrorが発生しました。
Undefined local valuable or method 'buf' for nil:nilclass
0420デフォルトの名無しさん
2006/07/21(金) 14:19:10それはさすがにスレ違いだろう・・・
0421デフォルトの名無しさん
2006/07/21(金) 16:15:230422デフォルトの名無しさん
2006/07/21(金) 16:27:230423デフォルトの名無しさん
2006/07/21(金) 20:37:140424デフォルトの名無しさん
2006/07/21(金) 23:03:270425デフォルトの名無しさん
2006/07/22(土) 05:13:29Rubyで実験した?
RGSSで実験した?
0426デフォルトの名無しさん
2006/07/22(土) 05:35:54require 'Win32API'
mciSendString = Win32API.new "winmm","mciSendString",["P","P","I","I"],"I"
mciSendString.call("set cdaudio door open", nil, 0, 0)
0427デフォルトの名無しさん
2006/07/22(土) 07:30:54おかしいなあ
おんなじエラーになっちゃうよ
RGSSでためしてみたけど。
0428デフォルトの名無しさん
2006/07/22(土) 07:53:520429デフォルトの名無しさん
2006/07/22(土) 10:27:53Windowsが最小化かどうか調べるにはどうしたらいいですか?
0430デフォルトの名無しさん
2006/07/22(土) 10:28:320431デフォルトの名無しさん
2006/07/22(土) 10:32:530432デフォルトの名無しさん
2006/07/22(土) 11:03:320433デフォルトの名無しさん
2006/07/22(土) 11:46:03大抵のプロセスは以下のような感じでOKなのですが
いくつかのプロセスはOpenProcessで失敗してしまいます (GetLastErrorはアクセスが拒否されたといってます
HANDLE ph = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, this->pid_ );
HMODULE mh=0; DWORD r=0;
EnumProcessModules( ph, &mh, sizeof(mh), &r );
char buf[MAX_PATH] = {0};
if( GetModuleBaseName(ph, mh, buf, sizeof(buf)) )
result = std::string(buf);
0434デフォルトの名無しさん
2006/07/22(土) 12:15:36ほかにもあるの?
0435デフォルトの名無しさん
2006/07/22(土) 12:28:13稼動中のプロセスのフルパス名を取得したいのであれば、
PSAPI.DLLを利用する方法もあります。
>いくつかのプロセスはOpenProcessで失敗してしまいます...
との事なので、NT系OSでの情報取得ですよね。
でしたら、PSAPI.DLLでググって見て下さい。
0436デフォルトの名無しさん
2006/07/22(土) 12:29:04HRESULTはビット毎に意味があるからよく読め
ttp://msdn.microsoft.com/library/en-us/com/html/15f3ae3e-1794-4948-a7aa-6309a703364b.asp
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_data_types.asp
0437デフォルトの名無しさん
2006/07/22(土) 12:54:26ありがとう。まさにばっちしのアンサー
0438433
2006/07/22(土) 13:09:11環境書き忘れてました. すいません Windows XP Home Edition SP2です
ttp://support.microsoft.com/default.aspx?scid=kb;ja;JP175030
PSAPI.DLLを利用する方法というのは
上記URLの「PSAPI ライブラリを使用したプロセスの列挙」 (ソースコード中では// If Windows NT 4.0以降
のことだと思われますが
hInstLib = LoadLibraryA("PSAPI.DLL");
...
lpfEnumProcesses = (BOOL (WINAPI *)(DWORD *, DWORD, DWORD*))GetProcAddress(hInstLib, "EnumProcesses");
...
lpfEnumProcesses(lpdwPIDs, dwSize2, &dwSize)
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, lpdwPIDs[dwIndex]);
と結局OpenProcessを呼んでしまっているので失敗すると思われます
違ってたらすいません
0439デフォルトの名無しさん
2006/07/22(土) 13:30:56アクセス拒否を回避する場合は、
LookupPrivilegeValueとAdjustTokenPrivilegesで特権を付与する。
但し、OSのアクセス権の変更可の設定に依存したと思う。
0440433
2006/07/22(土) 14:05:37できました. ありがとうございます
ttp://support.microsoft.com/default.aspx?scid=kb;ja;131065
0441デフォルトの名無しさん
2006/07/22(土) 20:35:20・cygwin環境
・g++
でプログラムを作っているのですが
この度boostのregexを使おうかと思い
入れてはみたのですが。
APIプログラムじゃないソースでは動くのですが。
APIプログラムでコンパイルしたところ(コンパイルはできます
実行し、regexの部分に差し掛かったときに(boost::regex
プログラムが停止してしまいます。(問題が発生しましたと・・・
解決方法ありますでしょうかorz
0442デフォルトの名無しさん
2006/07/22(土) 21:40:17単にお前のプログラムにバグがあるだけだろ。
0443441
2006/07/22(土) 22:20:24この一行だけで 動いてたプログラムが止まりってしまいます。
コンパイルでエラーはでてません。
0444デフォルトの名無しさん
2006/07/22(土) 23:23:19やりたいことは、C:\hogehoge ディレクトリとその中の全てのファイル・サブ
ディレクトリに、Everyoneのフルコントロールのアクセス許可を追加することです。
Explorerで、C:\hogehoge のプロパティーのセキュリティタブ・詳細設定で
適用先=[このフォルダ、サブフォルダおよびファイル]のEveryoneのフルコン
トロールを追加すると、C:\hogehogeの中の全てのファイル・サブディレクトリ
にも継承元がC:\hogehogeとしてEveryone/フルコントロールが追加されます。
(これと同じことをプログラムでやりたい)
元としているプログラムは、
http://support.microsoft.com/kb/102102
で、Step14のAddAccessAllowedAce()のところをAddAccessAllowedAceEx( ...
OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE,...) に変えています。
これで、C:\hogehoge 自身のセキュリティーは目的通りにEveryone/フルコント
ロールが追加されるのですが、中のファイル・サブディレクトリにはC:\hogehoge
から継承したEveryone/フルコントロールが追加されません。(元のまま)
中のファイル・サブディレクトリに継承するには、C:\hogehoge へのセキュ
リティ追加時に、OBJECT_INHERIT_ACE|CONTAINER_INHERIT_ACE を追加する以
外にやらなければならないことがあるのでしょうか?
あるいは、中のファイル・サブディレクトリ全てに対して、自前で
AddAccessAllowedAceEx( ...,INHERITED_ACE,... )のアクセス制御エントリを
追加しなければならないのでしょうか?
0445デフォルトの名無しさん
2006/07/23(日) 00:39:05boostスレで聞きなさい。
0446441
2006/07/23(日) 01:28:23cygwinのg++でコンパイル時に
no-cygwinオプションのせいでした。
0447デフォルトの名無しさん
2006/07/23(日) 12:13:21おねがいしまス。
0448デフォルトの名無しさん
2006/07/23(日) 12:34:34GetModuleFileName
この質問多いな。
つーか「アドレス」ってなんだよw
0449デフォルトの名無しさん
2006/07/23(日) 12:37:250450デフォルトの名無しさん
2006/07/23(日) 12:45:52>>447
つ GetModuleHandle
0451デフォルトの名無しさん
2006/07/23(日) 17:35:20○マップされてる
0452デフォルトの名無しさん
2006/07/23(日) 18:47:510453デフォルトの名無しさん
2006/07/23(日) 18:52:520454444
2006/07/23(日) 21:35:16SetFileSecurity()でなく、SetNamedSecurityInfo()を使えば、既存の設定を残しての追加や
中のファイル・サブディレクトリへの継承が簡単にできました。
0455デフォルトの名無しさん
2006/07/23(日) 23:36:28どういった筋のものでせうか
これ使ったときも削除or解放しなくてもよろしい?
0456デフォルトの名無しさん
2006/07/23(日) 23:53:15ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/icons/iconreference/iconmessages/wm_erasebkgnd.asp
解放しろとは書いてないので、解放しなくていい。
0457デフォルトの名無しさん
2006/07/23(日) 23:55:06どうもセットしたプロシージャーにメッセージが入ってないみたいなんですよ(↓で確認)
switch(msg)
{
MessageBeep(-1);
これって何が原因なんですかね?エロイ人おせーてorz
0458デフォルトの名無しさん
2006/07/24(月) 00:17:350459デフォルトの名無しさん
2006/07/24(月) 00:37:07よくわからん。
case :WM_NULLが来たって事か?
0460デフォルトの名無しさん
2006/07/24(月) 00:49:22書く場所間違えてたorz
>>458-459
おかげ様で解決できました、ありがとう
0461デフォルトの名無しさん
2006/07/24(月) 02:47:58Server 2003 SP1 Platform SDK Full Downloadしか結局見つからなかったのですが、
あたまにserver 2003って書いてるんですけど、これでいいんでしょうか?
当方XPです。
今後はPlatformSDKではなくFrameworkSDKで開発しろって事なんでしょうか??
見当違いな事を言ってたらすいません。
0462デフォルトの名無しさん
2006/07/24(月) 03:10:57Server 2003 SP1まで対応してるって話で、XPでも問題ない。
が、それで良いかは知らん。
VC++6.0だったら、February 2003使うべきだし。
VC++2005でDirectShowのBaseClassesをビルドしたい場合は、
最新のWindows Server 2003 R2 Platform SDKのを使う必要あったりするし。
0463デフォルトの名無しさん
2006/07/24(月) 03:22:552003server「に」対応してるという意味ではなく、2003server「まで」っていうことなんですね
勘違いしていました。。
>DirectShowのBaseClasses
というのを今後使うかはわからないのでとりあえず
Server 2003 SP1 Platform SDK
をインストールして、必要に応じてR2のほうも入れてみます。
ありがとうございました
0464デフォルトの名無しさん
2006/07/24(月) 12:09:26FindFirstFileやFindNextFileで"."と".."を拾ってくるのは使用なんですか?
C:\やD:\について用いるとそんなことないんですが。
0465デフォルトの名無しさん
2006/07/24(月) 12:16:31".."は親ディレクトリ
存在するものを拾ってるって事です。
0466デフォルトの名無しさん
2006/07/24(月) 12:18:07root 以外のディレクトリには . と .. は実在するテーブル情報だし
0467デフォルトの名無しさん
2006/07/24(月) 12:26:23ありがとうございます。よくわかりました。
0468デフォルトの名無しさん
2006/07/24(月) 14:48:34教えてください。普通にやっても出来ません…
0469デフォルトの名無しさん
2006/07/24(月) 16:19:06ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/menus/usingmenus.asp?frame=true#_win32_Creating_Owner_Drawn_Menu_Items
0470デフォルトの名無しさん
2006/07/24(月) 17:12:51お答えどうも有難うございます。
リンク先に書いてあるオーナードローのためのWM_MEASUREITEMや
WM_DRAWITEMはルートメニューに対しては飛んで来ないようです。
ルートメニューというのはウインドウのタイトルバーの下について
いる横長のメニューバーのつもりで書きました。他に言い方が分
らないので…。
やりたいことは、ルートメニューバーにビットマップで絵を
貼り付けたいのです。どこか勘違いしていますでしょうか?
よろしくお願い致します。
0471デフォルトの名無しさん
2006/07/24(月) 18:14:27MFC使ってるかどうかも。
今のままだとプログラムが間違ってるとしか答えられん。
0472デフォルトの名無しさん
2006/07/24(月) 18:27:27済みません。勘違いしてました。
プログラムを見直したところ、メッセージが飛んできたようです。
お騒がせしました。プログラムはWin32APIのみです。
有難うございました。
0473デフォルトの名無しさん
2006/07/24(月) 20:00:17ビットマップを貼り付けたいだけならオーナードローする必要は無いぞ。
http://www.kumei.ne.jp/c_lang/sdk/sdk_42.htm
0474472
2006/07/24(月) 20:06:38OSはXPなんですが、画面のプロパティ→デザイン→詳細設定
の、メニューで使われるフォントの名前やフォントサイズを
ユーザーの設定にそって反映させたいと考えています。
その辺を取得するにはどうしたらいいでしょうか?
SystemParametersInfo かとも思ったのですが、
ちょっとパラメータの詳細が分りませんでした。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/_win32_systemparametersinfo.asp
この辺には欲しいパラメータ内容が見当たりません。
見落としていますでしょうか?
よろしくお願い致します。
0476デフォルトの名無しさん
2006/07/24(月) 22:37:41FATには実在するけどNTFSではntfs.sysがでっち上げてる。
たぶん"."と".."は存在するに決まってると決めつけているプログラムを
混乱させないため
0477デフォルトの名無しさん
2006/07/24(月) 22:46:10素朴な疑問だけど、cygwinで表示されるiNodeNoとリンク数も実態を表していないと言うこと?
少なくとも見かけ上はリンクに見えるのだけど。
0478デフォルトの名無しさん
2006/07/24(月) 23:37:05SPI_GETNONCLIENTMETRICSで
0479デフォルトの名無しさん
2006/07/25(火) 00:16:58同じ症状の人いねえ?
0480デフォルトの名無しさん
2006/07/25(火) 00:17:41日本語版?英語版?
0481デフォルトの名無しさん
2006/07/25(火) 00:18:15お早い返事どうも
両方!
0482デフォルトの名無しさん
2006/07/25(火) 00:44:300483デフォルトの名無しさん
2006/07/25(火) 00:47:40嘘つくな
0484デフォルトの名無しさん
2006/07/25(火) 01:18:49Cygwinのリンク数の表示はOSネイティブのものをさらにいじってる
ディレクトリのリンク数は中のファイル数を表すように見えるけど
実際には一切カウントされてないとか
>>483
はいはいあなた様の言うことがすべて100%完璧に正しいです
ディスクをダンプしてみた結果もntfs.sysの逆アセンブル結果もすべて幻です
これで満足しましたか
0485デフォルトの名無しさん
2006/07/25(火) 03:31:44ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_postthreadmessage.asp
0486デフォルトの名無しさん
2006/07/25(火) 04:20:07WM_INITDIALOGじゃなくてWM_CREATEがくるのはなぜ?
0487デフォルトの名無しさん
2006/07/25(火) 06:54:52>ディスクをダンプしてみた結果もntfs.sysの逆アセンブル結果もすべて幻です
>これで満足しましたか
頭悪いなぁ。
そこが嘘だと言ってるのではなく、>>476の「たぶん」以降が嘘だと言ってるのだ。
0488デフォルトの名無しさん
2006/07/25(火) 06:58:50void HogeHoge(HWND hWnd)
--------------
typedef void*(*FUNC)(HWND);
hInstdll=LoadLibrary(dllへのフルパス);
dllfunction=(FUNC)GetProcAddress(hInstdll,"HogeHoge");
dllfunction(hWnd);
たぶんFUNCの定義が間違ってるのが原因だと思うのですが、何度試行錯誤してもうまくいきません
へるぷみーorz
0489デフォルトの名無しさん
2006/07/25(火) 07:26:210490デフォルトの名無しさん
2006/07/25(火) 08:13:26いけませんよね?(理由はわからないのですが)
そうすると、コールバック関数の中からコールバック関数の属するメンバに
アクセスするにはメンバもstaticにしないとコンパイルが通りませんが、
それでは複数のインスタンスを生成して同時処理をする場合に各インスタンスに
別々の設定を渡すことが出来なくなります。
VC++なのでCWnd::OnTimer()という方法もありますが重くなりそうなので、
自作クラスで何とかしたいのですが何か良い方法はあるでしょうか?
マルチスレッドならスレッドごとに独立して利用できるのかな?
0491デフォルトの名無しさん
2006/07/25(火) 08:17:34API云々の前にC++を勉強しなおせ。
0492デフォルトの名無しさん
2006/07/25(火) 08:21:01>SetTimer()でTIMERPROCを指定する時、コールバック関数はstaticにしないと
>いけませんよね?(理由はわからないのですが)
C++ならそう
Cならそんなことはない
0493デフォルトの名無しさん
2006/07/25(火) 08:21:430494デフォルトの名無しさん
2006/07/25(火) 08:22:52具体的にはどの辺をやり直せば良いでしょうか?
0495デフォルトの名無しさん
2006/07/25(火) 08:27:22シングルトンだと1個しか実体がないので複数のインスタンスで
別々の設定のタイマー処理ができないように思うのですが、
シングルトンでマルチスレッドならうまくいくのかな?
>>492
C++だけなんですか・・・なんでだー orz
この辺調べたほうがいいのかな?
0496デフォルトの名無しさん
2006/07/25(火) 08:27:440497デフォルトの名無しさん
2006/07/25(火) 08:54:01>>492さんのご指摘を受けて検索キーワードに「C++」を加えたら
こんなのが見つかりました。
これもシングルトンもどきしてるし、マルチスレッドにするほうがいいのか・・・
マルチスレッドのオーバヘッドも気になったんですけど試してみます。
>>492-496 ありがとうございました。
0498366
2006/07/25(火) 08:59:04グローバルにIDとオブジェクトを対応付けさせるしかないと思う。
と書こうとしたら、IDが使えると思いついた。このIDはUINT_PTR型だから大きさも問題ない。
class Hoge
{
public:
UINT_PTR SetTimer(HWND hwnd, UINT elapse)
{
return SetTimer(hwnd, reinterpret_cast<UINT_PTR>(this), elapse, TimerEntry);
}
private:
void TimerProc(HWND hwnd, UINT msg, UINT_PTR id, DWORD time);
static void CALLBACK TimerEntry(HWND hwnd, UINT msg, UINT_PTR id, DWORD time)
{
reinterpret_cast<Hoge*>(id)->TimerProc(hwnd, msg, id, time);
}
static std::map<UINT_PTR, Hoge*> TimerProcMap;
};
0499デフォルトの名無しさん
2006/07/25(火) 08:59:410500デフォルトの名無しさん
2006/07/25(火) 09:00:250501デフォルトの名無しさん
2006/07/25(火) 09:13:10マルチスレッドでも上限あるけど
どっちがいいかな
場合によるかな
0502デフォルトの名無しさん
2006/07/25(火) 09:19:43staticでないメンバ関数には、何らかの方法でthisを渡してやらなければならない(コンパイラが)
Win32 APIは、あらかじめ決められた呼び出し規約を使う。
メンバ関数と、APIの呼び出し規約は違う。
0503デフォルトの名無しさん
2006/07/25(火) 09:54:05ありがとう!
0505デフォルトの名無しさん
2006/07/25(火) 16:56:35SetとKillを繰り返したらダメとかありますか?
0506デフォルトの名無しさん
2006/07/25(火) 17:00:18質問があります。
インターネットエクスプロラーの画面で、ツールバーとその下のアドレス入力部分
の間に区切り線(横線)がはいってるのですが、どうやって表示しているのですか?
自分はラインを引いてそれっぽく見えるようにしたのですが・・・
どなたかよろしくお願いします。
0507デフォルトの名無しさん
2006/07/25(火) 18:25:51CreateWindow TOOLBARCLASSNAME
ところでwinnyのUI右上あるBBSボタンとなりの▲はapiの機能?
0508デフォルトの名無しさん
2006/07/25(火) 20:01:54たぶんVCLのTSpeedButton。
ウィンドウハンドル持たない(VCLによる)独自描画ボタン。
0509デフォルトの名無しさん
2006/07/25(火) 20:15:31ふむふむ・・・どうもー
0510デフォルトの名無しさん
2006/07/25(火) 20:57:14スマートでエレガントな方法を教えてください。
精力は尽くしましたがわかったことは下記の通りです。お願いします。
・任意のキーを使いたいのでRegisterHotKey()は役不足?
・SetWindowsHookEx?WH_KEYBOARD_LL?なにそれ
・AttachThreadInput?なんかほげほげって聞いたけど
0511デフォルトの名無しさん
2006/07/25(火) 21:00:060512デフォルトの名無しさん
2006/07/25(火) 21:31:350513デフォルトの名無しさん
2006/07/25(火) 21:37:320514デフォルトの名無しさん
2006/07/25(火) 21:42:27>・SetWindowsHookEx?WH_KEYBOARD_LL?なにそれ
で間に合うと思う。
0515デフォルトの名無しさん
2006/07/25(火) 23:09:140516デフォルトの名無しさん
2006/07/25(火) 23:27:470517506
2006/07/26(水) 00:40:58ありがとうございます
CreateToolbarEXでは境界線が表示できないということですか?
試しにあしたCreateWindow TOOLBARCLASSNAMEでやってみます。
0518デフォルトの名無しさん
2006/07/26(水) 00:42:53( ゚Д゚)
0519デフォルトの名無しさん
2006/07/26(水) 00:48:57カウンタとか参照用変数を作った場合、同期オブジェクトでロックしなくておk?
0520デフォルトの名無しさん
2006/07/26(水) 01:10:10別スレッドから呼ばれる。
0521デフォルトの名無しさん
2006/07/26(水) 01:12:08ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_timeproc.asp
>Applications should not call any system-defined functions from inside a callback function,
>except for PostMessage, timeGetSystemTime, timeGetTime, timeSetEvent, timeKillEvent, midiOutShortMsg, midiOutLongMsg, and OutputDebugString.
0522デフォルトの名無しさん
2006/07/26(水) 01:16:32焼く不足?
0524デフォルトの名無しさん
2006/07/26(水) 20:56:480525デフォルトの名無しさん
2006/07/26(水) 21:49:04描画する方法はありませんか?
グローバルのメッセージループをフックするとか…(←適当言ってます)
もし可能であればご教示ください。
0526デフォルトの名無しさん
2006/07/26(水) 21:51:44添付ファイルを指定することはできないんでしょうか。
0527デフォルトの名無しさん
2006/07/26(水) 21:53:270528デフォルトの名無しさん
2006/07/26(水) 21:55:42やり方あったら教えてくださいませ
0529デフォルトの名無しさん
2006/07/26(水) 22:04:03昔ある雑誌にMessageBoxの前でSetTimerつかって、
コールバック関数内でMessageBoxのウィンドウハンドル取得して
アイコンをセットしてるコードが載ってたなぁ。
0530デフォルトの名無しさん
2006/07/27(木) 00:44:02添付ファイル付きで新規作成になるけど、OEはシラネ。
0531デフォルトの名無しさん
2006/07/27(木) 01:07:250532デフォルトの名無しさん
2006/07/27(木) 08:44:420533デフォルトの名無しさん
2006/07/27(木) 09:35:48素POPはなんとかなるけど SMTP は少しめんどっちい
つか、そこまでいくと メールクライアントになれるじゃん
0534デフォルトの名無しさん
2006/07/27(木) 10:50:540535デフォルトの名無しさん
2006/07/27(木) 11:47:48ほぼ最初の最初で、つまづいてます。
GetStockObject(WHITE_BRUSH);
TextOut(hdc, 10, 10, (LPCSTR)str, strlen(str));
とかの関数を使ってMakeしようとすると
undefined reference to `GetStockObject@4'
undefined reference to `TextOutA@20
といわれてエラーになります・・・
もちろん<windows.h>はインクルードしていますし
これらの関数を使わなければ
CreateWindowとかShowWindowは問題なく通り
ウインドウを表示させることはできます。なぜなんでしょ・・・?
0536デフォルトの名無しさん
2006/07/27(木) 12:01:19開発環境を書こう
そのエラーはおそらくリンカの吐いてるエラー
gdi32.libをリンカに追加しる
0537デフォルトの名無しさん
2006/07/27(木) 14:11:43http://www.microsoft.com/japan/msdn/academic/Articles/DirectX/01/
のソース例を見ると、32768って言う数字があるのですが、
これはスティックが中心にある時はこの数字が返ってくるって事なんですか?
自分のソースでjoyGetPosExを使ってスティックの情報を取ると100とか200で左右に動かせてしまいます。
ちょっとよく分からないのでこのこといついて詳しく書いてるサイト等あれば教えてください。
0538デフォルトの名無しさん
2006/07/27(木) 16:35:35コンパイラはMinGW+MSYS、環境はEclipseCDTです。
-lgdi32オプションつけてコンパイルしたらうまくいきました、ありがとうございました。
0539デフォルトの名無しさん
2006/07/27(木) 19:52:10を付けているのですが、これを使うと座標単位がピクセル単位ではないのでうまく移動ができません。
ピクセル単位でドラッグできる方法はありますでしょうか?
0540デフォルトの名無しさん
2006/07/27(木) 19:57:02自前で変換しる。
でも、なんでマウスの移動の単位は、あんな単位なのだろう。
ピクセル単位だと、何か問題があるのかな。
0541デフォルトの名無しさん
2006/07/27(木) 20:03:090542539
2006/07/27(木) 20:03:3365535を解像度で割ったりとかしたけどダメでした。
0543デフォルトの名無しさん
2006/07/27(木) 20:15:12ある
0544デフォルトの名無しさん
2006/07/27(木) 20:20:570545デフォルトの名無しさん
2006/07/27(木) 20:33:24キンモー☆
0546デフォルトの名無しさん
2006/07/27(木) 20:53:18環境がわからんし、どうやっているのかもわからんのでなんとも。
0547デフォルトの名無しさん
2006/07/27(木) 20:58:27コマンドプロンプトのウインドウに壁紙の画像を貼り付ける
0548デフォルトの名無しさん
2006/07/27(木) 21:16:200549デフォルトの名無しさん
2006/07/27(木) 21:46:32開発環境が分からないので何とも言えないが、コンソールプログラムから
ウィンドウの作成を行っているのかな?。
つまりスタートアップルーチンは、WinMain でななく main だとしたら、
スタートアップルーチンを main から WinMain に換えるのと makefile を
若干修正するだけでプロンプト画面は表示しなくなる。
0550デフォルトの名無しさん
2006/07/27(木) 22:24:25入力デバイスのキャリブレーションを想定してるからじゃね?
(ペンデバイスや障害者用デバイスなどなど)
SystemParametersInfoになんかあった気がするが・・・
違うかな?
0551デフォルトの名無しさん
2006/07/27(木) 22:45:100552デフォルトの名無しさん
2006/07/27(木) 23:56:290553デフォルトの名無しさん
2006/07/28(金) 00:05:06http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_winmain.asp
0554デフォルトの名無しさん
2006/07/28(金) 00:25:04cygwin|mingwかよ。環境書けやコルァ
0555デフォルトの名無しさん
2006/07/28(金) 00:47:22自アプリなら素直にダイアログ作れ
そうじゃなければAdvanced Windows
>>551
ちなみに -mwindows 付けたなら -lgdi32 はいらないはずだ確か
0556デフォルトの名無しさん
2006/07/28(金) 00:54:16例えば、user32.dllで定義されているMessageBox関数をフックしたい場合、
まずはHook_MessageBoxAとHook_MessageBoxWの2つの置き換え関数を作成します。
どこに作成してもよいのですが、ターゲットのプロセスに注入しないことには
フックできませんから、DLLとして作成しておきます。
そのDLLをターゲットプロセスへ注入すると、DLLは最初に
CreateToolhelp32Snapshotを使ってすべてのモジュールを探索します。
そして、そのモジュールひとつひとつに対してインポートセクションを持っているかどうかを調べ、
持っていたらMessageBoxAのアドレスをHook_MessageBoxAへ、
MessageBoxWのアドレスをHook_MessageBoxWへ書きかえます。
これでMessageBox関数が実行されたら、注入されたDLL内にある
Hook_MessageBoxAとHook_MessageBoxWが呼び出されることになり、
見事APIをフックすることができると考えられます
0557デフォルトの名無しさん
2006/07/28(金) 04:13:11メッセージクラッカは使えないの?
0558デフォルトの名無しさん
2006/07/28(金) 07:49:23ググると見つかるが、一工夫必要。
http://www.google.co.jp/search?q=%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%20%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%82%AF%E3%83%A9%E3%83%83%E3%82%AB%E3%83%BC
0559デフォルトの名無しさん
2006/07/28(金) 17:32:14DIBSectionでBMPの読み方そしえてくれまsんか?
0560デフォルトの名無しさん
2006/07/28(金) 18:04:30サンクス
気軽に聞いちゃったけど
ググりを怠るといけませんね
0561デフォルトの名無しさん
2006/07/28(金) 18:33:330562デフォルトの名無しさん
2006/07/28(金) 18:41:180563デフォルトの名無しさん
2006/07/28(金) 18:41:51グローバルIPです。ルーターを使っていても自分のグローバルIPを取得する方法を教えてください
0564デフォルトの名無しさん
2006/07/28(金) 18:43:060565デフォルトの名無しさん
2006/07/28(金) 19:11:07UPnPで取れるはずだが、簡単で汎用的な方法は無い。
0566デフォルトの名無しさん
2006/07/28(金) 20:15:101・モニタ省電力モードへ切り替えるAPI(→画面が消え、モニタの電源ランプがスタンバイになる)
2・省電力モードから復帰するAPI(→モニタの電源が入り画面が表示される)
3・電源オプションのプロパティにある「モニタの電源を切る」の設定を変えるAPI
特に1番と2番の情報を教えて下さい。APIの名前だけでも結構です。
解る範囲で検索してもノートパソコンの新情報とかそういうユーザー視点の情報しか発見できませんでした。
2番については、省電力になった後SetCursorをランダム座標で呼び出すテストをやってみましたが案の定だめでしたw
よろしくお願いします。
0567デフォルトの名無しさん
2006/07/28(金) 20:23:200568デフォルトの名無しさん
2006/07/28(金) 20:28:24それぽいのが出てきました。これ専用のAPIなんて無かったのですね。ちょっと試験してみます。
ありがとうございました。
0569デフォルトの名無しさん
2006/07/28(金) 20:30:39COMインターフェイスのメソッドでもいいです。
ツールバーのCLSIDを渡すような感じのものを想像してるんですが
0570デフォルトの名無しさん
2006/07/29(土) 03:18:08どのように使い分けるのでしょうか?
0571デフォルトの名無しさん
2006/07/29(土) 04:07:45WINAPIはOSが定義した自分が呼び出す関数に付けるけど
関数ポインタでも使わない限り自分で書くことはないでしょ
0572デフォルトの名無しさん
2006/07/29(土) 04:21:12WinMainがあるじゃん。
0573デフォルトの名無しさん
2006/07/29(土) 06:23:430574デフォルトの名無しさん
2006/07/29(土) 08:52:010575デフォルトの名無しさん
2006/07/29(土) 09:41:35lpBuf=(LPBYTE)GlobalAlloc(GPTR,GetFileSize(fh,NULL)); // バッファ確保
ReadFile(fh,lpBuf,GetFileSize(fh,NULL),&dummy,NULL);
CloseHandle(fh);
//いろいろポインタ取得
lpInfo=(LPBITMAPINFO)(lpBuf+sizeof(BITMAPFILEHEADER));
lpfh=(LPBITMAPFILEHEADER)lpBuf;
lpBmpInfo=new BITMAPINFO;
CopyMemory(lpBmpInfo,lpInfo,sizeof(BITMAPINFOHEADER));
width=lpInfo->bmiHeader.biWidth;
height=lpInfo->bmiHeader.biHeight;
lpPixel= new DWORD [width*height*3];
CopyMemory(lpPixel, &lpfh->bfOffBits ,sizeof(width*height*3));
//ファイルメモリ バイバイ
GlobalFree(lpBuf);
/* DIBSection作成 */
hbmpBMP = CreateDIBSection(NULL, lpBmpInfo, DIB_RGB_COLORS, (void **)(&lpPixel), NULL, 0);
/* DIBSection用メモリデバイスコンテキスト作成 */
hdcBMP = CreateCompatibleDC(hdc);
/* DIBSectionのHBITMAPをメモリデバイスコンテキストに選択 */
SelectObject(hdcBMP, hbmpBMP);
うまくいかない・・・
0576デフォルトの名無しさん
2006/07/29(土) 11:02:13(つーか、DWORD * width * height * 3って96bitビットマップかよ!)
だから、CopyMemoryはCreateDIBSectionの後で。
lpfh->bfOffBitsは、ファイルの先頭からデータまでのバイト数だから、
&lpfh->bfOffBitsではなく、lpBuf+lpfh->bfOffBitsだね。
sizeof(width*height*3)って、width*height*3のsizeを求めてもしゃーないやろ。
それにビットマップは横1ラインが4バイト境界で有る必要がある。
計算式は('A`)マンドクセ
0577デフォルトの名無しさん
2006/07/29(土) 11:29:38thx。
修正しめみます。
0578デフォルトの名無しさん
2006/07/29(土) 12:24:54for (y=0;y<44;y++)
{
for (x=0;x<width;x++)
{
*( lpPixel+x*3+ y*width )=255;//B
*( lpPixel+x*3+1+y*width )=255;//G
*( lpPixel+x*3+2+y*width )=255;//R
}
}
<(T◇T)>わぁああああ!
http://gamdev.org/up/img/6849.gif
0579デフォルトの名無しさん
2006/07/29(土) 12:26:06*( lpPixel+x*3+ y*width*3 )=255;//B
*( lpPixel+x*3+1+y*width*3 )=255;//G
*( lpPixel+x*3+2+y*width*3 )=255;//R
0580デフォルトの名無しさん
2006/07/29(土) 12:41:57lpPixelがLPDWORDのままでないかい?
x*3+y*widthバイトではなく、(x*3+y*width)*sizeof(DWORD)バイト進んだ位置をさすことになるぞ。
代入もDWORD単位だから、255ということは0x000000FFが書き込まれる。
width*3ではなく、4バイト境界でそろえた数値をかける必要がある。
0581デフォルトの名無しさん
2006/07/29(土) 13:26:30LPDWORD lpPixel
↓
LPBYTE lpPixel
に変更したら直りました
さんきゅ〜!
0582デフォルトの名無しさん
2006/07/29(土) 14:07:23普通に「++」でインクリメントしても、
今のところ期待するような結果が返ってきます
0583デフォルトの名無しさん
2006/07/29(土) 14:12:15不可能と判断しました。失礼しました〜
0584デフォルトの名無しさん
2006/07/29(土) 14:16:24サロゲートとか考慮してんじゃないの?
0585デフォルトの名無しさん
2006/07/29(土) 14:34:42CharNextWが無かったら、CharNextを使ってるソースをUnicodeビルドできないじゃん。
いちいちインクリメントに書き直せとでも?
0586デフォルトの名無しさん
2006/07/29(土) 16:39:19WinMainにはAPIENTRYという専用の修飾子がある
0587デフォルトの名無しさん
2006/07/29(土) 17:03:26ウィンドウで「常に最前面に表示」と「常に最前面に表示を解除」の切り替えをやりたいのです。
�@選択されたウィンドウが「常に最前面に表示」なら「常に最前面に表示を解除」
�A選択されたウィンドウが「常に最前面に表示」でないなら「常に最前面に表示」
て感じ
設定するのはSetWindowPosでうまくいってるんだけど、
現在の状態(最前面?そうでない?)がどっちなのか判断できません。
どうやったらいいですか?
0588デフォルトの名無しさん
2006/07/29(土) 17:07:17if (iReturnStatus & WS_EX_TOPMOST)
でできまちた
ごめんちゃい
0589デフォルトの名無しさん
2006/07/29(土) 19:56:30質問があります。
エディットコントロールで特定の入力だけを処理するには(例えばリターンのみ)ウィンドウのクラス化をすると
簡単にできたのですが、コンボボックスで同じことをやるにはどうすればよいですか?キー入力の横取りができません
どなたか教えてください。
0590デフォルトの名無しさん
2006/07/29(土) 20:00:39コンボボックスのエディットコントロールをサブクラス化する。
0591589
2006/07/29(土) 20:40:14GetComboBoxInfoを使用してエディットボックスのハンドルを収得
してエディットボックスのサブクラス化ですね。ありがとうございました
しかし、エディットコントロールとエディットボックスは同じと
考えて問題ないのでしょうか・・・
0592デフォルトの名無しさん
2006/07/29(土) 20:56:50どなたか教えてください。
0593デフォルトの名無しさん
2006/07/29(土) 21:11:400594592
2006/07/29(土) 21:36:28素早い返信ありがとうございます。
早速、
http://www.runan.net/program/tips/sdk_10_ITaskbarList.shtml
とかを見ながらためしてみようと思います。
0595デフォルトの名無しさん
2006/07/29(土) 22:12:23よくゲームなどで情報を表示している小窓みたいなので
(ネトゲのステータス表示してる子窓とかチャットウィンドウみたいなの)
そういうのでスキンを使ったみたいに見た目をカスタマイズしてるのって
どうやってやっているんですか?
自力で窓作るのも無駄な気がするし…
0596デフォルトの名無しさん
2006/07/29(土) 22:18:26DXUTのGUIはスキンサポートしてるみたいだけど
0597デフォルトの名無しさん
2006/07/29(土) 22:20:06板違い
ゲ製作技術
ttp://pc8.2ch.net/gamedev/
0598デフォルトの名無しさん
2006/07/29(土) 22:32:44ゲーム作ってるわけじゃなかったのであまり深く考えていませんでしたが
ちょっとそっち方面で調べてみますありがとう
0599デフォルトの名無しさん
2006/07/29(土) 22:38:380600デフォルトの名無しさん
2006/07/29(土) 23:33:40ttp://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.asp
0601デフォルトの名無しさん
2006/07/29(土) 23:42:41ウィンドウ枠含め全て自前で描画し、WM_NCHITTESTを適切に処理してあげるとか?
0602デフォルトの名無しさん
2006/07/30(日) 06:25:48htmlでメニュー作る感じに画像で作る、丸いとことかさ
0603デフォルトの名無しさん
2006/07/30(日) 09:59:44ファイルから読み込んだ文字をエディットボックスに表示したりしたいんだけど、どうすればいいの?
0604デフォルトの名無しさん
2006/07/30(日) 10:15:34Edit_GetText, Edit_SetText
その前にWindowsプログラム関連の書籍か数多く出版されているので、
それらの本でプログラムの基礎を学ぶことをお勧めする。
0605デフォルトの名無しさん
2006/07/30(日) 10:55:25ありがとう
今までDirectXとかゲームに近い方ばかりやってたからWinAPI本持ってないや
今度見てみる
0606デフォルトの名無しさん
2006/07/30(日) 11:12:010607デフォルトの名無しさん
2006/07/30(日) 15:35:23そこにウィンドウプロシージャを埋め込むにはどうしたらいい?
0608デフォルトの名無しさん
2006/07/30(日) 16:02:02staticにする。
0609デフォルトの名無しさん
2006/07/30(日) 18:21:58ウィンドウを生成・管理するクラスWindowに
メンバ関数としてウィンドウプロシージャを組み込むにはどうしたらいい?
WNDCLASSEX構造体にプロシージャなメンバ関数WndProc()へのアドレスを設定しようとしてもエラーで入らない
宣言
(LRESULT CALLBACK) Window::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
問題箇所
WNDCLASSEX wcex;
wcex.lpfnWndProc= this.WndProc;
エラー内容
error C2228: '.WndProc' の左側はクラス、構造体、共用体でなければなりません
型は 'Window *const ' です。
0610デフォルトの名無しさん
2006/07/30(日) 18:23:180611デフォルトの名無しさん
2006/07/30(日) 18:38:360612デフォルトの名無しさん
2006/07/30(日) 18:45:17staticなウィンドウプロシージャから個々のクラスの
ウィンドウプロシージャを呼べばいい。
これは色んなところで議論されてるから
ググばすぐ見つかると思う。
0613デフォルトの名無しさん
2006/07/30(日) 19:09:25スマソ、理解力不足だった
ググってみたところそれらしいのがあったんでその通りにしてみたら問題なくビルドできた
ttp://qwerty.s2.xrea.com/XC2CCCAB82FBBB2B9CDA4CBA4B7A4C6A4CFA4A4A4B1A4CAA4A4XWindowsSDKXA5ECA5B7A5D42FX2.xhtml
>>608
サンクス
0614デフォルトの名無しさん
2006/07/30(日) 19:19:18コンパイル後、実行すると「問題が発生したため・・・」のウィンドウが出てしまいます。
どうも次のレスに記述するソースの「問題の行」と示したところがまずいようなんです。
(そこの記述を消すとエラーが起こらない)
なぜまずいのでしょうか??
0615614
2006/07/30(日) 19:19:27#include <math.h>
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance , PSTR lpCmdLine , int nCmdShow) {
int bittbl[ 1024 ];
int n;
int n2;
int n_harf;
HANDLE hFile;
DWORD dwWriteSize;
PSTR header = TEXT( "int bittbl[] = {\n" );
PSTR bit;
PSTR footer = TEXT( "};" );
hFile = CreateFile( "bittbl.h" , GENERIC_WRITE , 0 , NULL , CREATE_ALWAYS , FILE_ATTRIBUTE_NORMAL , NULL );
WriteFile( hFile , header , lstrlen( header ) , &dwWriteSize , NULL );
//数列bittbl[n]作製
〜省略〜
//数列をテキストへ出力
for( n=0;n<1024;n++ ){
wsprintf( bit , "\t%d ,\n" , bittbl[ n ] ); ←問題の行
WriteFile( hFile , bit , lstrlen( bit ) , &dwWriteSize , NULL );
}
WriteFile( hFile , footer , lstrlen( footer ) , &dwWriteSize , NULL );
CloseHandle( hFile );
return 0;
}
0616デフォルトの名無しさん
2006/07/30(日) 19:29:07APIより先にC言語の基本からやり直せ
0617デフォルトの名無しさん
2006/07/30(日) 19:42:37ウィンドプロシージャで最後にDefWindowProcに渡すようになってる所で
switch文でdefault使って他はreturn 0とかやる場合とウィンドプロシージャの最後に直接returnでやる場合と
色々見かけるような気がするんですが、これはどっちでも変わらないんでしょうか?
switch文の各処理が終わった後の処理が変わるような気がするんですが
違いとかあるんでしょうか?
0618デフォルトの名無しさん
2006/07/30(日) 19:47:48「メッセージを処理したときは0を返せ」って書いてるだろ?
裏を返すとメッセージを処理しなかったときはDefWindowProcを返せってこと。
大半のメッセージについてはDefWindowProcも0を返すだけだから
違いが見えにくいかもしれないけど
0619デフォルトの名無しさん
2006/07/30(日) 19:47:53言ってる通りなんじゃね?
0620614
2006/07/30(日) 20:01:05とくにメモリ確保しなくても同じようなことが他のプログラムではできたのですが・・・
仕方ないので、そのプログラムを改造して数列をテキスト出力しました。
0621デフォルトの名無しさん
2006/07/30(日) 20:05:50各メッセージ処理が終わった後に0返さずさらにDefWindowProcしてるのが
あったような気がしたのでふと疑問に思ったのですが、勘違いかもしれないですね。
何か変に考えすぎていたのかも
でも、DefWindowProcが大抵0返すのなら、上記のような感じでも
無駄っぽい気はするけど、そんな問題ないって感じなのかな
ありがとうございました。
0622デフォルトの名無しさん
2006/07/30(日) 20:11:07自分で処理した後デフォルト処理したい時もあるだろ
0623デフォルトの名無しさん
2006/07/30(日) 20:20:13確かにそういわれれば…
疑問が解消されましたありがとう
0624デフォルトの名無しさん
2006/07/30(日) 20:33:37>とくにメモリ確保しなくても同じようなことが他のプログラムではできたのですが・・・
こええなおいw 問題の行で確保してないメモリ領域に書き込んでるぞ。
0625614
2006/07/30(日) 20:40:52そのプログラム、ちょっといじると同様のエラーが起こるようになりました!
PSTR bit の宣言時に PSTR bit = TEXT( "\t%1024 ,\n" ) とすれば問題なくなりましたが、
ちょっとかっこわるい気がします。
他にメモリを確保する方法を教えてください。
0626デフォルトの名無しさん
2006/07/30(日) 20:44:540627デフォルトの名無しさん
2006/07/30(日) 20:51:03だからC言語の基本からやり直せ
0628デフォルトの名無しさん
2006/07/30(日) 21:18:19PSTR bit; を TCHAR bit[65536]; に書き換える。
そんなにいらないとか言われてもしらん。
0629デフォルトの名無しさん
2006/07/30(日) 21:25:300630デフォルトの名無しさん
2006/07/30(日) 21:35:47> PSTR bit の宣言時に PSTR bit = TEXT( "\t%1024 ,\n" ) とすれば問題なくなりましたが、
> ちょっとかっこわるい気がします。
とかほざいてる奴に解決策だけ教えてもかえって有害な気がするけどなあ
0632デフォルトの名無しさん
2006/07/30(日) 21:57:54親ウィンドウから切り離して、強制的にメインウィンドウにさせることは可能でしょうか?
0634デフォルトの名無しさん
2006/07/30(日) 22:04:550635デフォルトの名無しさん
2006/07/30(日) 22:29:120636デフォルトの名無しさん
2006/07/30(日) 22:36:47SetParent(NULL)したらSetWindowLongでWS_CHILDを外してWS_POPUPを付けるようにとMSDNが言っている。
0637632
2006/07/30(日) 23:10:41できるんですか!?ものすごく裏技チックなので無理かと思ってました。
ありがとうございます。MSDNで公式に発表されてる処理だとは。ワロス
0638デフォルトの名無しさん
2006/07/31(月) 03:00:16このときポコっていう通知音が邪魔くさいんです。なんとか消すようにできませんか?
0639デフォルトの名無しさん
2006/07/31(月) 03:10:08メモリの使用についてテストしたくて以下のコード書いたのですが
実行後タスクマネージャでメモリ使用量を確認しても640kbしか消費してません
60MB消費されると思っていたのですが
どうしてですか?
#include <windows.h>
#include <cstdio>
int main() {
PVOID mem = VirtualAlloc(NULL,60000*1024,MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
if (mem != NULL) printf("ok");
scanf("%s",mem);
}
0640デフォルトの名無しさん
2006/07/31(月) 03:24:31VirtualAllocでぐぐったら一番上に出てきたが?
質問する前に自分で調べような。
0641639
2006/07/31(月) 03:30:06ごめん。そのページ読んでたんだけどよくわからなかったんだ
「
コミット済み このページには物理記憶域が割り当てられていて、
アクセス保護コードによってアクセスは制御されています。
このページの読み取りまたは書き込みを最初に試みた場合にのみ、
システムは各コミット済みページを初期化し、物理メモリへロードします。
」
つまり、コミットしてても実際にそこへ何か書き込まなければメモリは実際には
確保されないということですか?
0642639
2006/07/31(月) 03:37:58以下のコードだとタスクマネージャのメモリ使用量は
636kbでした
PVOID mem = VirtualAlloc(NULL,60000*1024,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
これを以下にするとメモリ使用量は640kbになりました
PVOID mem = VirtualAlloc(NULL,60000*1024,MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
mem = "aiueo";
これはaiue0\0という6バイトの文字列がコミットした領域に書き込まれて、
その4kbのページングファイル一つがメモリに読み込まれたということですね
で、以下のようにすればちゃんとメモリ使用量が60MBになりました
PVOID mem = VirtualAlloc(NULL,60000*1024,MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
FillMemory(mem, 60000*1024,0);
やっと、寝れる
0643デフォルトの名無しさん
2006/07/31(月) 03:47:31windef.hを見てたんだけど
LPVOIDはあるけどPVOIDがありません
PVOIDはどのヘッダファイルで定義されているのでしょうか?
0644デフォルトの名無しさん
2006/07/31(月) 03:56:520645デフォルトの名無しさん
2006/07/31(月) 08:39:37スクリーンセイバーを作動をさせないようにする関数はありますか?
0646デフォルトの名無しさん
2006/07/31(月) 08:43:15ない。
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B403844
0648デフォルトの名無しさん
2006/07/31(月) 09:26:26コンパネのサウンドで無音に設定汁
0649デフォルトの名無しさん
2006/07/31(月) 10:34:25禿しくありがとうございますた
0650デフォルトの名無しさん
2006/07/31(月) 10:40:530651デフォルトの名無しさん
2006/07/31(月) 12:48:110653デフォルトの名無しさん
2006/07/31(月) 13:57:10一つ聞きたいことがあったので、皆さんに質問させていただきます。
ダイアログボックス内のエディットボックスにおいて、例えばボタン1を押すとエディットボックス内に「OK」と表示されるとします。
次にボタン2を押したときに、前の「OK」を消さずに
OK
NG
と改行して表示させたいのですが、どのようにすればよいのでしょうか?
普通にSetDlgItemTextでやると前のを上書きして消えてしまうし、かといって違う方法が思いつかなくて困っています。
ネットでもMFCでかかれたものはのっているのですが、APIで書かれているものがないのでこちらにて質問させていただきました。
お手数をおかけいたしますが、よろしくお願いいたします。
0654デフォルトの名無しさん
2006/07/31(月) 14:04:15EM_SETSEL
EM_REPLACESEL
0655デフォルトの名無しさん
2006/07/31(月) 14:32:58むむ、てことはシステム通知音をプログラム側でいじるようにすればいいのか。
おk−調べてみるぜ
0656デフォルトの名無しさん
2006/07/31(月) 14:43:56本気で言ってるのかw
0657デフォルトの名無しさん
2006/07/31(月) 14:55:36GetWindowText
lstrcat
SetWindowText
0658デフォルトの名無しさん
2006/07/31(月) 15:32:08送信先のウィンドウがアクティブのときは確かにそうなのですが、
送信先のウィンドウが非アクティブの時は処理をすることなく即座に制御が返ってきます。
これはなぜですか?
0659デフォルトの名無しさん
2006/07/31(月) 15:47:39・非アクティブの時処理をしてないことをどうやって確認したのか
0660658
2006/07/31(月) 16:09:40ユーザー定義メッセージ
#define WM_USER_ESC_FLAG (WM_USER + 0)
SendMessage(hMainWnd, WM_USER_ESC_FLAG, 0, 0);
です。
・非アクティブの時処理をしてないことをどうやって確認したのか
ビープ音で確認しました。
switch (msg) {
case WM_USER_ESC_FLAG:
MessageBeep(-1);
0661658
2006/07/31(月) 16:11:330662デフォルトの名無しさん
2006/07/31(月) 16:15:12非アクティブなプロセスはMessageBeepで音を出せない。
とかいうことはないのか?
0663デフォルトの名無しさん
2006/07/31(月) 16:19:19だせます
0664デフォルトの名無しさん
2006/07/31(月) 17:46:20MessageBeepとかちょttあやしい
0665デフォルトの名無しさん
2006/07/31(月) 18:33:530666デフォルトの名無しさん
2006/07/31(月) 19:04:570667デフォルトの名無しさん
2006/07/31(月) 21:33:170668デフォルトの名無しさん
2006/07/31(月) 23:45:32後付けで言い出したんだけどな
0669デフォルトの名無しさん
2006/08/01(火) 00:24:490670デフォルトの名無しさん
2006/08/01(火) 08:55:32先ほどスクリーンセイバーについて質問しました者ですが
勘違いをしていました。
事情があってスタンバイ等の設定ができないので
プログラム起動中は スタンバイ || 休止状態を
させないプログラムを作りたいのです。
しかしスクリーンセイバーを止めてもスタンバイ || 休止状態に入って
しまいました。(無知でした)
スタンバイ等を抑止する方法はあるのでしょうか?
デスクトップ等に SendMessage 等でキーコードを送信したり
マウスカーソルの位置を定期的に変えたりと試しましたがどれも
失敗です。今は電池をスペースキーに置いて席を離れています。
0671デフォルトの名無しさん
2006/08/01(火) 09:01:06WM_POWERBROADCASTのPBT_APMQUERYSUSPENDに対してBROADCAST_QUERY_DENYを返す。
0672デフォルトの名無しさん
2006/08/01(火) 09:10:23ワロス
0673デフォルトの名無しさん
2006/08/01(火) 10:34:09その数だけメモリDCを増やさなければいけません。
いくつまで増やしていいものでしょうか?
お願いします。
0674デフォルトの名無しさん
2006/08/01(火) 10:50:190676デフォルトの名無しさん
2006/08/01(火) 11:25:140677デフォルトの名無しさん
2006/08/01(火) 11:28:140678デフォルトの名無しさん
2006/08/01(火) 11:29:43その数だけメモリを増やさなければいけません。
いくつまで増やしていいものでしょうか?
お願いします。
0679デフォルトの名無しさん
2006/08/01(火) 11:30:220680デフォルトの名無しさん
2006/08/01(火) 11:32:44論理的な限界
のいずれかに達するまで
0681673
2006/08/01(火) 11:43:540682デフォルトの名無しさん
2006/08/01(火) 13:19:40アニメ BEST100
ttp://www.animedepot.biz/DVDlist/2005years_best.htm
1位
http://www.animedepot.biz/DVDlist/title/KVDVD0542.htm
2位
http://www.animedepot.biz/DVDlist/title/KVDVD0518.htm
3位
http://www.animedepot.biz/DVDlist/title/A18D2492.htm
4位
http://www.animedepot.biz/DVDlist/title/KVDVD0533.htm
5位
http://www.animedepot.biz/DVDlist/title/A18D2480.htm
6位
http://www.animedepot.biz/DVDlist/title/KVDVD0512.htm
7位
http://www.animedepot.biz/DVDlist/title/KVDVD0502.htm
8位
http://www.animedepot.biz/DVDlist/title/KVDVD0521.htm
9位
http://www.animedepot.biz/DVDlist/title/KVDVD0505.htm
10位
http://www.animedepot.biz/DVDlist/title/KVDVD0508.htm
0683デフォルトの名無しさん
2006/08/01(火) 15:29:43今更だけど、WCHARはUTF-16だから、
CharNextWはサロゲートペアのことも考えてくれるのではないか?
0684デフォルトの名無しさん
2006/08/01(火) 19:32:14大いに意味アリだよね
0685デフォルトの名無しさん
2006/08/01(火) 23:35:15WinAPIで何かのキーを押したときに何か違うキーも押したことにするってできますか?
Kを押したら一緒にF12も押したことにしてくれるみたいな。
0686デフォルトの名無しさん
2006/08/01(火) 23:35:350687デフォルトの名無しさん
2006/08/02(水) 00:03:54どういう実装にするのが普通なんでしょうか?
自作は最後の手段として、ヘッダーコントロールで
代用しようと思ったら、その子にしたコントロール専用の
通知メッセージが届かなくなり、使い物になりませんでした。
やはりMFCのを使うのが無難なのかな・・・
0688デフォルトの名無しさん
2006/08/02(水) 00:24:44MFCかWTLをお勧めする。
0689デフォルトの名無しさん
2006/08/02(水) 01:10:360691デフォルトの名無しさん
2006/08/02(水) 15:51:31ある2つのプログラムをメンテナンスしています。
仮に「pg-1.exe」と「pg-2.exe」とします。
pg-1、pg-2は、ともにほぼ常時稼動するプログラムです。
pg-1はpg-2からCreateProcessで起動され、pg-1は起動された直後に
ウィンドウのタイトルの文字列をファイルに記述します。
ユーザーはpg-2上のボタンを押すことでpg-1を再起動することができます。
pg-2はボタンが押されたら、ファイルに記述された文字列を元にFindWindowし、そのウィンドウに
WM_CLOSEをPostします。終了したことを確認してから再度CreateProcessする仕組みです。
pg-1にバグが見つかって修正した場合、新しいpg-1.exeに入れ替える際の作業手順は次の形です。
1. 実行中のpg-1.exeのファイル名をpg-1-bk.exeに変更。
2. 新しいpg-1.exeを同じフォルダにコピー。
3. pg-2上のボタンを押して再起動。
この結果pg-1.exeは終了されるのですが、その後起動されるのがたまになぜかpg-1-bk.exeだったりします。
しかし、pg-2.exe内でのCreateProcessでは第一引数、第二引数で固定的に「pg-1.exe」を
指定しているのです。
私の頭で考えつくのは、システムのディスクキャッシュみたいなものがあって、
そこの内容が実際のファイル名の変更についていってなくて、新しいpg-1.exeを起動したつもりが
元のpg-1.exe(現pg-1-bk.exe)が起動されたのか?とかぐらいなんですが
入れ替えたpg-1.exeが起動されるようにするにはどうしたらいいんでしょうか?
普段はVB6erであんまり慣れてないので、お手柔らかにお願いします。m(_ _)m
0692デフォルトの名無しさん
2006/08/02(水) 16:05:00> 1. 実行中のpg-1.exeのファイル名をpg-1-bk.exeに変更。
> 2. 新しいpg-1.exeを同じフォルダにコピー。
はどうやってるの?
pg-1.exeが動作中でファイルがロックされてて失敗してないか?
0693デフォルトの名無しさん
2006/08/02(水) 16:27:48今のところエクスプローラ上でファイル名変更、コピー出来てます。
入れ替え後のファイルのプロパティを表示すると、バージョンも変わっているので、
入れ替わっていると思います。
0694658
2006/08/02(水) 16:37:58誤:
#pragma data_seg(".sharedata")
HHOOK g_hHookWnd_gm = 0;
#pragma data_seg()
HWND hMainWnd = 0;
正:
#pragma data_seg(".sharedata")
HHOOK g_hHookWnd_gm = 0;
HWND hMainWnd = 0;
#pragma data_seg()
こういうオチでした…
メッセージを送るときはWindowHandleも共用にしておかないとダメなんですね
0695デフォルトの名無しさん
2006/08/02(水) 17:06:25GetPixelじゃメモリ上にあるカラーを取得できません。
ピクセルビットを読み込む他の方法があれば教えてください。
お願いします。
0696デフォルトの名無しさん
2006/08/02(水) 17:12:460697695
2006/08/02(水) 21:14:100698デフォルトの名無しさん
2006/08/03(木) 00:50:360699デフォルトの名無しさん
2006/08/03(木) 04:19:07最新のMSDN(英語版)を見ると、CallNextHookExの第1引数はNULLを渡せばいいことになってる。
だから、g_hHookWnd_gmを共用にしなくてもいいかも。
0700デフォルトの名無しさん
2006/08/04(金) 08:46:130701デフォルトの名無しさん
2006/08/04(金) 09:13:010702デフォルトの名無しさん
2006/08/04(金) 10:39:16SetWindowPosでそのウインドウの"常に前面表示”を切り替えるプログラムを作ったんですが、
PhotoshopやLunascape等アプリのウインドウだとそのウインドウがアクティブになってる時しか利きません。
メモ帳だといつでも利くんですが、なんでですか?
0703デフォルトの名無しさん
2006/08/04(金) 10:55:280704デフォルトの名無しさん
2006/08/04(金) 17:22:41LoadLibraryでDLLをロードしてGetProcAddressで関数を呼び出しています。
この関数から呼出し元のプログラム中の別の関数を呼び出すことは可能ですか?
コンパイラはMinGW(gcc)を使っています。
VC++なら可能、という回答でもありがたいです。
よろしくお願いいたします。
0705デフォルトの名無しさん
2006/08/04(金) 17:48:47関数ポインタを渡せば出来そうだけど、
DLLが外部に依存したらDLLの意味がないだろ。
0706デフォルトの名無しさん
2006/08/04(金) 18:45:24どうもありがとうございます。
NULLってなくなるってことですよね?解決策はありませんでしょうか?
0707デフォルトの名無しさん
2006/08/04(金) 19:30:09コールバックさせたいのかも
0708704
2006/08/04(金) 19:59:16ご推察の通り、コールバックです。
問題のDLLは本体に対するプラグインでして、依存しても差し支えありません。
Unix/Linux では関数ポインタを使わなくても呼出し元のコールバック関数が
呼び出せているので、Windows でも同じようにできないかなと考えています。
引続きよろしくお願いいたします。
0709デフォルトの名無しさん
2006/08/04(金) 20:10:25Unixの勝手は知らないが、Windowsは関数ポインタを渡すのが一番手っ取り早いだろ。
0710デフォルトの名無しさん
2006/08/04(金) 20:12:45設計がおかしい。
0711デフォルトの名無しさん
2006/08/04(金) 20:21:28DLLにしろEXEモジュールにしろ、その中の各関数は本体モジュールの
ベースアドレスからの相対アドレスで管理されているから、エクスポート
されていない関数の場合は、その関数名からその関数が存在するアドレス
を求めるのは無理なので、コールバック呼び出しは無理だと思う。
"GetProcAddress" は、エクスポートテーブルからそのAPIの位置を特定
している訳だし。
メインソース内のサブルーチンをエクスポート宣言できれば、多分、その
モジュールのベースアドレスから関数のアドレス位置を特定できると思う。
0712デフォルトの名無しさん
2006/08/04(金) 20:22:59Susieプラグインなんかはアプリ側からDLLへ関数ポインタ渡してる(画像展開の途中経過表示など)
0713デフォルトの名無しさん
2006/08/04(金) 20:25:220714デフォルトの名無しさん
2006/08/04(金) 21:16:48SetWindowPosしたいだけなら普通FindWindowを使ってハンドルを取得する
0715706
2006/08/04(金) 22:04:53レスありがとうございます。
FindWindow使い方がよく分からなかったのでGetForegroundWindowにしたんですが、
この二つで取得できるハンドルは同じウインドウでも違うものなんですか?
0716デフォルトの名無しさん
2006/08/04(金) 22:07:210717704
2006/08/04(金) 22:29:44>>709
確かに。ただ、DLL側から呼びたい本体側のサブルーチンの数が多いのと、
Unixでは関数ポインタを使う必要がないので、より簡単な方法があれば
知りたいと考えました。
>>711
本体側のサブルーチンにエクスポート宣言を入れることは可能です。
しかし、得られるものが関数ポインタということは、やはりDLL側での
本体のサブルーチンの普通の関数呼出しの形では呼べないということですね。
どうやらDLL周りの設計をUnix版から大きく変えないといけないみたいです。
お騒がせしました。ありがとうございました。
0718704
2006/08/04(金) 22:31:570719デフォルトの名無しさん
2006/08/04(金) 23:09:34HSPなんかが使ってたような
0720デフォルトの名無しさん
2006/08/04(金) 23:40:45DLLもEXEも大雑把に言えば、エントリポイントが違うだけで、同じモジュールなんだし。
0721デフォルトの名無しさん
2006/08/04(金) 23:42:310722デフォルトの名無しさん
2006/08/05(土) 00:18:12「exeからエクスポートした関数にインポートライブラリでDLLからリンクする」
みたいなことだと勝手にエスパーして>>719を書いてみたわけだが
0723デフォルトの名無しさん
2006/08/05(土) 08:40:060724704
2006/08/05(土) 10:06:15>>719-720
ありがとうございます。「インポートライブラリ」という概念が分かっていませんでした。
本体側の関数をエクスポートしてインポートライブラリを作り、
プラグインの構築時にリンクすることで普通の関数呼び出しの形で呼び出せました。
試作したプログラムを添付してまとめに代えます。本当にありがとうございました。
/* 本体:gcc -o test1 test1.c -Wl,--out-implib,callback.a */
#include <windows.h>
#include <stdio.h>
const char *dlerror(void) {
static char last_error[1024];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), last_error, sizeof(last_error) / sizeof(char), NULL);
return last_error;
}
typedef int (*plugin_func_t)(int, int);
static int *x;
int main(int argc, char *argv[]){
HINSTANCE handle;
plugin_func_t func;
int a = 1, b = 2;
handle = LoadLibrary("foo.dll");
if (!handle) { printf("LoadLibrary: %s", dlerror()); return -1; }
func = (plugin_func_t)GetProcAddress(handle, "plugin_func");
if (!func) { printf("GetProcAddress: %s", dlerror()); return -1; }
x = (int *)malloc(sizeof(int));
printf("plugin_func(%d, %d) => %d\nx = %d\n", a, b, (*func)(a, b), *x);
return FreeLibrary(handle);
}
0725704(
2006/08/05(土) 10:07:32printf("callback_func: a = %d, b = %d\n", a, b);
*x = a + b;
return *x;
}
/* プラグイン:gcc -shared -Wl,--kill-at -o foo.dll foo.c callback.a */
__declspec(dllimport) int /* __stdcall */ callback_func(int, int);
__declspec(dllexport) int /* __stdcall */ plugin_func(int a, int b) {
printf("plugin_func: a = %d, b = %d\n", a, b);
return callback_func(a, b);
}
0726デフォルトの名無しさん
2006/08/05(土) 10:17:07どうしてこのコードでWM_QUITか調べられるですか?
0727デフォルトの名無しさん
2006/08/05(土) 10:22:54それはWM_QUITかどうかを判定してるわけじゃない。
GetMessageの説明をちゃんと読みましょう。
0728デフォルトの名無しさん
2006/08/05(土) 10:23:37分かりにくいからQUITで判定した方がいいと思うが
0729デフォルトの名無しさん
2006/08/05(土) 10:27:470730デフォルトの名無しさん
2006/08/05(土) 10:29:510731デフォルトの名無しさん
2006/08/05(土) 11:59:15そこhWndを引数にする必要はあるか?
0732デフォルトの名無しさん
2006/08/05(土) 12:03:00「ウィンドウを最前面ウィンドウにするには、hWndInsertAfterパラメータで、
HWND_TOPMOSTフラグをセットしたうえでSWP_NOZORDERフラグをクリアするか…」
とあるんですが、SWP_NOZORDERフラグってどうやってクリアするんですか?
0733デフォルトの名無しさん
2006/08/05(土) 12:10:12普通にSWP_SHOWWINDOW入れてSetForegroundWindowすればいいんじゃね
0735デフォルトの名無しさん
2006/08/05(土) 14:07:070736デフォルトの名無しさん
2006/08/05(土) 14:09:540737デフォルトの名無しさん
2006/08/05(土) 16:14:470738デフォルトの名無しさん
2006/08/05(土) 16:26:510739デフォルトの名無しさん
2006/08/05(土) 16:38:20してるのにその中で定義されてる
HCRYPTPROV
とかが未定義エラーになるのですが
どうすれば良いのでしょうか?
0740デフォルトの名無しさん
2006/08/05(土) 16:44:090741732
2006/08/05(土) 19:54:51マウスを使わずにキーボードで非アクティブなウインドウを、
常に手前表示、解除して後ろに表示と切り替えたいんです。
プログラム作るの初めてなんでとっかかりでも教えてもらえると嬉しい。
0742デフォルトの名無しさん
2006/08/05(土) 20:10:02とりあえず↓嫁
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/
0743tttttった
2006/08/05(土) 20:47:00MIDIならしたいんだけど、VB.net ならわかるんだけど
J#は 書き方がわからない。
0744732
2006/08/05(土) 21:03:35意地悪せずに教えて欲しいのです。ググりまくってここまでできたんですが、
repeat
p1_p = p1
getkey p1,120
if (p1=1) & (p1_p=0){ if a=0 {SetWindowPos hwndact,-1,0,0,0,0,1 or 2 or 16
a=1 }
else {SetWindowPos hwndact,-2,0,0,0,0,1 or 2 or 16
SetWindowPos hwndact,1,0,0,0,0,1 or 2 or 16
a=0}}
wait 2
loop
操作するウインドウがアクティブになってないと反応しません。
メモ帳のウインドウだと非アクティブでも反応するんですが…
ちなみにプログラム言語はHSPです。
0745デフォルトの名無しさん
2006/08/05(土) 21:10:15J/Directでぐぐれ
0746デフォルトの名無しさん
2006/08/05(土) 21:45:58>意地悪
( ゚Д゚) ポカーン
0747tttttった
2006/08/05(土) 22:03:11J#のことがかかれてるいいHPないかな?
0748デフォルトの名無しさん
2006/08/05(土) 22:59:00その質問はスレ違い。
ビット反転してAND取ればいいんだが、正直それが分からないレベルで
このスレに来られても非常に困る。
0749デフォルトの名無しさん
2006/08/06(日) 00:03:40でもなんにしても>>732はスレ違いだな。
0750デフォルトの名無しさん
2006/08/06(日) 00:04:51されません
0751デフォルトの名無しさん
2006/08/06(日) 00:08:05カスはすっこんでろ
0752デフォルトの名無しさん
2006/08/06(日) 00:09:58こういう輩がHSPの評判をさげていくんだろうね。
俺の中では、既にHSPは厨房専用言語的な地位を占めているワケだけど。
0753デフォルトの名無しさん
2006/08/06(日) 00:22:32オマエラこういう時だけ反応速いなwww
0754デフォルトの名無しさん
2006/08/06(日) 00:27:170755749
2006/08/06(日) 00:34:18言ってるのかと思ったんだよ、カスで悪かったなw
0756デフォルトの名無しさん
2006/08/06(日) 00:40:080757デフォルトの名無しさん
2006/08/06(日) 02:42:30WM_PAINTが来たときなどで
BeginPaint()
(文字列の描画処理)
EndPaint()
これだと上手く動くのですが
BeginPaint()
(文字列の一回目の描画処理)
EndPaint()
BeginPaint()
(文字列の二回目描画処理)
EndPaint()
にしたら二回目が描画されません。BeginPaintとEndPaintは一回しか使用してはいけないのでしょうか?
よろしくお願いします。
0758デフォルトの名無しさん
2006/08/06(日) 02:47:55そうだよ。
0759デフォルトの名無しさん
2006/08/06(日) 02:53:54「使用しなくても良い」
が正解
0760デフォルトの名無しさん
2006/08/06(日) 09:29:410761デフォルトの名無しさん
2006/08/06(日) 09:39:31If insufficient space is available to store the new string, it is CB_ERRSPACE.
とあるのですが、このinsufficient space(不十分な空白?)とは
何を指しているのでしょうか?
0762デフォルトの名無しさん
2006/08/06(日) 09:48:000765デフォルトの名無しさん
2006/08/07(月) 10:50:05Validate??? を明示的に呼び出さないと、
不必要な WM_PAINT が、がんがんやって来るんじゃまいか?
0766デフォルトの名無しさん
2006/08/07(月) 13:11:11タスクバーに表示されているタイトルが違うアプリケーションがあるのですが
あれはどのように実現しているのでしょうか?
0767デフォルトの名無しさん
2006/08/07(月) 14:42:00ウィンドウを2つ作ってる。
0768デフォルトの名無しさん
2006/08/07(月) 15:40:57ありがとうございました
なんとか実現できそうな感じです
0769デフォルトの名無しさん
2006/08/07(月) 22:27:45Managed DirectX
0770デフォルトの名無しさん
2006/08/09(水) 11:35:48描画が遅い感じがします。
追加した後に描画したいのですが可能でしょうか?
0771デフォルトの名無しさん
2006/08/09(水) 11:50:470772デフォルトの名無しさん
2006/08/09(水) 12:16:390774デフォルトの名無しさん
2006/08/09(水) 12:56:030775デフォルトの名無しさん
2006/08/09(水) 13:25:29TListItems.BeginUpdate() / TListItems.EndUpdate()
0776デフォルトの名無しさん
2006/08/09(水) 14:43:35最新のMSDN(英語版)を見ると、CallNextHookExの第1引数はNULLを渡せばいいことになってる。
だから、g_hHookWnd_gmを共用にしなくてもいいかも。
0777デフォルトの名無しさん
2006/08/09(水) 14:52:35???w
>776
???w
0778デフォルトの名無しさん
2006/08/09(水) 14:52:43この手の馬鹿って、何を考えて生きてるんだろうね。
0779デフォルトの名無しさん
2006/08/09(水) 15:07:00WM_SETREDRAW
0780デフォルトの名無しさん
2006/08/09(水) 15:07:09WM_SETREDRAW
0781デフォルトの名無しさん
2006/08/09(水) 15:07:560782デフォルトの名無しさん
2006/08/09(水) 15:23:02WM_SETREDRAW
0783デフォルトの名無しさん
2006/08/09(水) 15:23:40WM_SETREDRAW
0784デフォルトの名無しさん
2006/08/09(水) 15:24:340785デフォルトの名無しさん
2006/08/09(水) 15:26:50WM_SETREDRAW
0786デフォルトの名無しさん
2006/08/09(水) 15:28:37WM_SETREDRAW
0787デフォルトの名無しさん
2006/08/09(水) 15:35:310788デフォルトの名無しさん
2006/08/09(水) 18:17:57たとえば、\\local\hoge というUNCから c:\hage という共有元のフォルダ名を知りたいということです。
0789デフォルトの名無しさん
2006/08/09(水) 18:23:23で最も効率のいい方法って何かありますか?
方法は幾らかあると思うんですが、ここのスレに居る人のやり方を聞きたいです
0790デフォルトの名無しさん
2006/08/09(水) 18:27:00mutex
0791デフォルトの名無しさん
2006/08/09(水) 18:27:13mutex
0792デフォルトの名無しさん
2006/08/09(水) 18:29:18mutexがいいんじゃないかな。
0793792
2006/08/09(水) 18:29:590794デフォルトの名無しさん
2006/08/09(水) 18:31:50じゃあ条件追加
重複時は先に起動してた方のウィンドウにフォーカスを合わせたいです
0795デフォルトの名無しさん
2006/08/09(水) 18:32:52ググれ、カス
0796デフォルトの名無しさん
2006/08/09(水) 18:39:21ググってもでてこないような裏技的な方法で頼む
0797デフォルトの名無しさん
2006/08/09(水) 18:41:03氏ね
0798デフォルトの名無しさん
2006/08/09(水) 18:42:090799デフォルトの名無しさん
2006/08/09(水) 18:45:04_T("多重起動なら、先に起動した方のウィンドウにフォーカスを合わせてください"),
_T("多重起動チェック"),
MB_OK);
0800デフォルトの名無しさん
2006/08/09(水) 18:48:34何かのファイルを排他で開く。
0801デフォルトの名無しさん
2006/08/09(水) 18:48:37Mutexとレジストリを使う方法
Mutexを使わないでファイルマッピングを使う方法
Windowsじゃなくて自分しか立ち上がらないようにして再起動する方法 (Win95時代のCD焼きソフトにこんなのがあった。)
というわけで788もよろしくです。
0802デフォルトの名無しさん
2006/08/09(水) 18:51:45・超
・裏技
・絶対
0803デフォルトの名無しさん
2006/08/09(水) 18:54:50・超簡単に作りたいので、
・裏技を教えてください!!!
・絶対ありますよね!
0804デフォルトの名無しさん
2006/08/09(水) 18:56:21net share 相当のことをAPIでやるってことですよね。
なんとなくWNetOpenEnum と WnetEnumResource で列挙すれば
良いような気がする。
0805デフォルトの名無しさん
2006/08/09(水) 18:59:16ファイルマッピングにハンドルつっこんどけば?
0806デフォルトの名無しさん
2006/08/09(水) 19:52:41オレは、ウィンドウクラス名にユニークなものを付けて、起動時にFindWindowで
チェック、見つけたら起動中止&見つけたウィンドウをアクティブにしてる。
(ウィンドウができないくらい)超短時間で二重起動されたらダメだが・・・・・
0807デフォルトの名無しさん
2006/08/09(水) 19:58:06> 超短時間で二重起動
そんな感じで、二重起動できないソフトを二重起動させてしまったことがある。
スタートアップ中に待ちきれなくて、2度もそのソフトをスタートメニューから呼んだらそうなった。
0808デフォルトの名無しさん
2006/08/09(水) 20:06:00ウィルス対策ソフトでリアルタイムスキャンなんかしてると頻発する
0809デフォルトの名無しさん
2006/08/09(水) 20:06:540810デフォルトの名無しさん
2006/08/09(水) 20:07:240811デフォルトの名無しさん
2006/08/09(水) 20:13:570812デフォルトの名無しさん
2006/08/09(水) 20:37:260813デフォルトの名無しさん
2006/08/09(水) 21:18:19飽きないのかなあ
0814デフォルトの名無しさん
2006/08/09(水) 22:10:28動的にメモリの確保を行いたいんですが
mallocやrealloc(重要)みたいなAPIはないですか?
ヘルプ見る限り上記の仕様だとヒープ領域はよろしくないと感じたので
どなたか知っていたら教えてください。
0815デフォルトの名無しさん
2006/08/09(水) 22:11:170816デフォルトの名無しさん
2006/08/09(水) 22:17:01ありがとうございます。ちなみにreallocに近い動作は出来るのでしょうか?
0817デフォルトの名無しさん
2006/08/09(水) 22:46:46ヒープ管理がほしかったら、
そのまんまの名前、HeapCreate()からHeapAlloc(), HeapReAlloc()などがまさにそれ。
0818デフォルトの名無しさん
2006/08/09(水) 22:47:19タスクマネージャが二重起動したことがある。
0819デフォルトの名無しさん
2006/08/09(水) 23:03:36.r-‐i'''''''''''i''''‐-、
o| o! .o i o !o
.|\__|`‐´`‐/|__/|
|_, ─''''''''''''─ ,、 / _
/ \
/ / ヽ
| ● ⌒) ● |
! 、__) ノ
丶_ ノ
/´ ヽ` ̄ ー-゙:.、 おっぱい吸ってね
i - 、 `ヽ_
l: 、.: ヽ ゙i"
! i ; n .:c.: ', _..ハ
| ハ/ { _,..-ァノ 、r‐、>ー ヽ
| ト./ ` ̄__,.:=彡 :.ヾ、ニ二 /
. | |ノ -=< ゙=tラ'"
| / ,-一'" ̄´ i
|:/ / \:. !
| ' / ヽ:. :、 \
゙、 ノ .i:. ` ヽ
`ー' _:/__:. `ー---─ ''"´ ̄ ̄`` ー- 、
/´ `ヽ、. .: `ヽ、
/ `ヽ、 ゙i
i まんこも なめてね :; ,!
! ‐-、 :. ;: .:' /
ヽ ヽ ; j:! " __..:-‐'"´ ̄ ̄` __ノ
\ ! .:' 〃 ,..:---─‐'"´ __.. -──── ''"´
`ヽ、 ヽ、 ノ-く⌒ヾ:.:'ー--ァ'"´
`ヽ、 >:)..( );;;;;;}:/` ̄i
0820デフォルトの名無しさん
2006/08/09(水) 23:14:24もちろんできる。
VirtualAllocの最初の引数かどこかに、割り当てたい位置へのポインタを指定するという引数があるだろ。
0821デフォルトの名無しさん
2006/08/09(水) 23:40:08realloc()とは違うだろそれは。
ページサイズ単位でしか確保できないぞ。
realloc()と同じ用途で使うには不向き。
メモリをOSから「確保」するのは遅いし。
0822デフォルトの名無しさん
2006/08/10(木) 02:29:12可能でしょうか?
何かのアプリケーションが実行されるたびにメッセージが送られてくる
みたいなAPIはないでしょうか?
0823デフォルトの名無しさん
2006/08/10(木) 09:10:06WM_MOUSEMOVE メッセージが飛んできますが、
それを飛んでこないようにカーソルを移動できないでしょうか。
諸事情により、"マウスで"移動した場合の処理をしたいのです。
0824デフォルトの名無しさん
2006/08/10(木) 09:57:05デバドラなら可能。
プロセス・スレッド起動時、プロセス・スレッド終了時
それぞれのイベントをトレース可能。
0825デフォルトの名無しさん
2006/08/10(木) 11:06:13CreateProcessにグローバルフック掛ければ?
定期的にポーリングするのでよければ、CreateToolhelp32Snapshot()が簡単
0826デフォルトの名無しさん
2006/08/10(木) 11:37:480827デフォルトの名無しさん
2006/08/10(木) 13:40:12実行する方法ってある?
物凄いスピードで実行されるんでちょっと困ってる。
ki.timeとかmi.timeとか使えるかと思ったら全然関係ない見たい出汁
0828デフォルトの名無しさん
2006/08/10(木) 13:51:29任意の間隔でSendInputすればいいじゃん
0829デフォルトの名無しさん
2006/08/10(木) 14:10:48せっかくまとめて送信できるのに1個ずつに分けるのも面倒だし・・・
作ってそれに渡す。
0831デフォルトの名無しさん
2006/08/10(木) 14:24:52イベントを個別に分割すると意味が無いような。
0832デフォルトの名無しさん
2006/08/10(木) 16:24:36char buffer[3000]="";
wsprintf(buffer,"a='%s',b='%s',c='%s'.........",a,b,c,d.......);
と70個くらい文字列を渡してSQL文を作ろうとしてるのですが、
どうもwsprintfのせいでうまくいきません。
同じように使える 代わりに使う関数のお勧めありますか?
0833デフォルトの名無しさん
2006/08/10(木) 16:30:10任意の間隔舞っている間に、
他のプロセス、もしくはユーザが入力をするというのは考えられんのか。
あるいは、いかなる方法をもってしてもそんなことはさせたくないのか……。
スレッドの優先度をリアルタイムにs(ry
0834デフォルトの名無しさん
2006/08/10(木) 17:10:25sprintf, std::stringstream, boost::format
0835デフォルトの名無しさん
2006/08/10(木) 17:15:010836デフォルトの名無しさん
2006/08/10(木) 17:30:14意味がわからん
マウスで移動した場合の処理がしたいならWM_MOUSEMOVEいるじゃねぇかとおもうのはおれだけか
0837823
2006/08/10(木) 17:50:57マウスで移動した場合は処理したいけど、
プログラム側で移動した場合は処理したくない。
だから SetCursorPos API で WM_MOUSEMOVE が発生するのはマズーなのです。
なんかいい方法ないでしょうか...
0838デフォルトの名無しさん
2006/08/10(木) 18:09:020839デフォルトの名無しさん
2006/08/10(木) 20:51:17リストビューで
ツールチップを表示している上(表示していない場合もあり)からダブルクリックした場合に
ブラウザを起動する処理なのですが
うまくメッセージが取れません。
ツールチップがある時はトリプルクリックで成功します。
そこで次のように書きました
case WM_LBUTTONDOWN:
EraseListViewTips();
return CallWindowProc(original_procedure, hWnd, message, wParam, lParam);
case WM_LBUTTONDBLCLK:
MessageBox(hWnd, "ダブルクリック", "debug", 0);
EraseListViewTips()はツールチップを消す関数です。
これで成功するのですが一般的にはどうするのでしょうか?
欲を言うとツールチップを消さずにメッセージを取りたいのです
0840デフォルトの名無しさん
2006/08/10(木) 22:58:11char buffer[0x8000];
buffer[0] = '\0';
//条件
if (略){
::lstrcat(buffer, "SELECT DB.A ");
}else
:
などなど
0841デフォルトの名無しさん
2006/08/10(木) 23:03:10各文字の正確な位置や幅を知る方法は無いでしょうか?
GetTextExtentPoint32やGetCharABCWidthsを使うと
MSゴシックではいいのですがCourier Newにするとずれてしまいます。
0842デフォルトの名無しさん
2006/08/10(木) 23:05:350843841
2006/08/11(金) 01:09:45文字列に記号が混ざっており、会社のWinXPだとCourier Newでも
うまく出たんですが、Win2kだと□になりました。
□になった状態だとGetTextExtentPoint32やDrawTextでうまくいきました。
(文字列:L"Δ∇Δ∇" WinXPで描画:Δ∇Δ∇ Win2kで描画:Δ□Δ□)
XPのとき、フォントに含まれない文字も描画されるのはなぜなんでしょうか?
そのときの表示幅を得るにはどうすればいいのでしょうか?
0844デフォルトの名無しさん
2006/08/11(金) 01:21:35たぶんXPでうまく表示されるのは、フォントリンクが働いているためだと思う。
ちなみに2000でもフォントリンクは使える。
ただXPよりデフォルトで指定されているリンクの数は少なかったはず。
0845デフォルトの名無しさん
2006/08/11(金) 11:36:37自前でリストビューでツールチップを表示させているのですが
自動でできないのでしょうか?
0846デフォルトの名無しさん
2006/08/11(金) 11:42:14クリエイトウィンドウの時に(ry
0847デフォルトの名無しさん
2006/08/11(金) 13:16:13文字列の一部を枠で囲ったりマウスでのヒットテストをするために
各文字の位置を知りたいのなら GetTextExtentExPoint を使う。
指定した幅に収まる文字数も返してくれるので、
矩形内で折り返したりするものは自力で1行ずつ処理。
0848デフォルトの名無しさん
2006/08/11(金) 14:09:59javaで作られたソフトのリストボックの各項目の左側(12mm?) の位置をクリック
したいのです。
javaはリストボックスなどを自前で描画しているとの事です。(listview to CVS より)
調べたらWM_LBUTTONDOWNメッセージを送ればいいとの事ですがそれには
座標の計算?が必要だそうです。
質問はWinAPIで
リストボックスの項目の数を取得
各項目の位置(座標)を取得
メッセージを送信
これはWinAPIで可能でしょうか?
0849デフォルトの名無しさん
2006/08/11(金) 14:57:06SWT (Java のアプリで Win32 の各種コントロールを用いている)なら
多少のハックでできると思うけど、
PureJava だとかなりのハックをしないと出来ないんじゃないかな。
0850デフォルトの名無しさん
2006/08/11(金) 15:04:57abc.lib をどのように編集して xyz.lib を作ればよいでしょうか。
abc.dll のソースは入手できないものとします。
0851デフォルトの名無しさん
2006/08/11(金) 15:39:22abc.libをバイナリエディタで開いてabcと書かれているところをxyzに変更。
0852デフォルトの名無しさん
2006/08/11(金) 15:40:18xyzuvw.dll に変更したかったら?
0853デフォルトの名無しさん
2006/08/11(金) 16:17:110855788
2006/08/11(金) 17:25:01NetShareGetInfo でいけますた。
参考URL:ttp://www.hey-to.net/ML-archive/vcppML/1999/msg03058.html
>>804様、Thx
0856デフォルトの名無しさん
2006/08/11(金) 18:09:31TTM_SETTOOLINFOでTTF_TRANSPARENT 指定しているのに、
ダブルクリックが阻害されるという話ですか?
0857デフォルトの名無しさん
2006/08/11(金) 19:36:47送信しても最初のイベントしか実行されないんだが何でだろう?
フックを外すとSendInput()に渡したイベント全部実行されるんだけどフック
してるとダメポ。
フックハンドラ内でCallNextHookEx()もしてるんだけど、どうしてもうまく行かない。
誰か知ってたら教えてください。お願いします。
0858デフォルトの名無しさん
2006/08/11(金) 20:18:02フックハンドラが間違ってるんじゃない?
ソース晒さないと、それ以上はわからん
0859デフォルトの名無しさん
2006/08/11(金) 21:24:27夏休みの宿題でキーロガー作れとかあるんだろうか
0860デフォルトの名無しさん
2006/08/11(金) 21:51:33keybd_event()やデータが1個しかないSendInput()だと同時に動くんだけど
と思ったら、フック外してもダメだ。
MOUSE_INPUTはフック無しで動いたから大丈夫と思ってたけど自分のミスっぽい。
ごめん自分で調べてみます。
>>859
自分のはそんな怪しいものでは無いです。
勉強がてら、ちょこちょこと手動操作の自動化をして自己満足に浸ってるだけw
0861デフォルトの名無しさん
2006/08/12(土) 00:42:36腕試しにネトゲの多重起動を実行ファイルをバイナリィエディタで弄らずに成功させる方法として
APIファックを使おうと考えたわけだが…・
CreateMutexはまさにexeがメモリにマッピングされた瞬間くらいから呼ばれるわけで…
まだ起動していないプロセスにどうやって寄生虫をファックさせるのかという壁にぶちあたった('A`)
0862デフォルトの名無しさん
2006/08/12(土) 00:47:11CREATE_SUSPENDED API Hook でググれ。
0863デフォルトの名無しさん
2006/08/12(土) 15:17:42元ファイルのパスを取得するにはどうすればいいのでしょうか?
0864デフォルトの名無しさん
2006/08/12(土) 17:20:42黙れ貴様コンパイルするぞ?
0866デフォルトの名無しさん
2006/08/12(土) 17:52:040867デフォルトの名無しさん
2006/08/12(土) 17:55:590868デフォルトの名無しさん
2006/08/12(土) 18:06:44左のツリービューにカテゴリーがあって、
右側に各種項目が表示されるタイプのがありますが、
あれって、右側はどういうコントロールを使っているんでしょう?
0869デフォルトの名無しさん
2006/08/12(土) 18:14:060870デフォルトの名無しさん
2006/08/12(土) 18:17:02不覚にもワロタ
0871デフォルトの名無しさん
2006/08/12(土) 18:30:39tweak UIでもspy++で見てみればいいじゃん
0872デフォルトの名無しさん
2006/08/12(土) 18:55:14チャイルド属性つきのダイアログ
それを左側の選択で、各項目毎のに張り替える
0873845
2006/08/13(日) 14:39:54>>854
0874デフォルトの名無しさん
2006/08/13(日) 14:45:30猫に書いてるだろ
0875845
2006/08/13(日) 15:14:420876デフォルトの名無しさん
2006/08/13(日) 15:44:140877デフォルトの名無しさん
2006/08/13(日) 16:20:34そもそも、質問が曖昧。
リストビューのコントロールにたいして「りすとびゅー」てなツールチップを表示したいのか、
表示されているリストビューアイテム一つ一つに対して「あいてむ1」という感じにツールチップの内容を変えないと行けないのか、
はたまた、ぜんぜん違う事を考えているのか、
おまいさんの質問からは読み取れない。
0878845
2006/08/13(日) 16:37:50分かる方だけ返答をお願いします
0879チンカス
2006/08/13(日) 17:44:300880デフォルトの名無しさん
2006/08/13(日) 17:55:260881デフォルトの名無しさん
2006/08/13(日) 18:29:15既に2日経ってるのに
ここで返答が返ってこない限り何もしない気なの?
0882デフォルトの名無しさん
2006/08/13(日) 18:30:300883デフォルトの名無しさん
2006/08/13(日) 18:32:34もう、放っとこうよ。
0884845
2006/08/14(月) 08:34:02FFFTPのソースを見ましたけど独自に描画しているのです。
ツリービューは横スクロールバーが付くときは
自動でツールチップが表示されますよね?
そういうのがリストビューには無いのですか?
0885デフォルトの名無しさん
2006/08/14(月) 08:53:15過去レス見ずに一言。
リストビューはセルの幅が足りないときにはツールチップが出ますがそれのことではない?
こんな感じ
┼────┼
│ 幅の足...│
┼────┼
↓
┼┌────────┐
││ 幅の足りないセル│
┼└────────┘
0886デフォルトの名無しさん
2006/08/14(月) 09:59:42SDKのタスクバー項を眺めてもそれらしい情報無しです。
Officeとかは設定できているみたいです。
設定しないと、exeの名称になっとる。
0887デフォルトの名無しさん
2006/08/14(月) 10:38:12つまり動的に設定はできない。
0888デフォルトの名無しさん
2006/08/14(月) 11:04:59レスありがとう。ためしてみたけど、できるやつとできないやつがあります。
VC6, VB6で作ったexe → exe名が表示される
あと、manifest情報も、リソースで設定したり、manifestファイルで設定してみたけど、
exe名が表示されてしまいました。
0889デフォルトの名無しさん
2006/08/14(月) 11:19:47それを出すのになにかスタイルが必要じゃないですか?
普通にやってもでないのですが?
0890デフォルトの名無しさん
2006/08/14(月) 11:45:03ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/ex_styles.asp
0891デフォルトの名無しさん
2006/08/14(月) 12:25:56それ使えないよw
0892デフォルトの名無しさん
2006/08/14(月) 12:56:500893デフォルトの名無しさん
2006/08/14(月) 14:44:52情報があると英文も読み易くなるので嬉しいかも。
0894891
2006/08/14(月) 15:07:38英語は読めんけど LABELね
TOOLで検索してたw
0895デフォルトの名無しさん
2006/08/14(月) 19:40:48無い。自分で実装汁。もうしてるみたいだけど。
0896デフォルトの名無しさん
2006/08/15(火) 11:32:07>>890
0897デフォルトの名無しさん
2006/08/15(火) 18:12:54UNIXでいえばgetuidみたいな奴
0898デフォルトの名無しさん
2006/08/15(火) 18:14:110899897
2006/08/15(火) 18:17:20本当ですか?
できればメソッド名を教えていただきたいのですが。
だめ?
0900デフォルトの名無しさん
2006/08/15(火) 18:24:270901デフォルトの名無しさん
2006/08/15(火) 18:34:100902デフォルトの名無しさん
2006/08/15(火) 19:34:50知らないなら知らないっていえよw
0903デフォルトの名無しさん
2006/08/15(火) 19:37:090904デフォルトの名無しさん
2006/08/15(火) 19:40:130905デフォルトの名無しさん
2006/08/15(火) 19:41:070906デフォルトの名無しさん
2006/08/15(火) 19:42:070907デフォルトの名無しさん
2006/08/15(火) 19:46:090908904
2006/08/15(火) 19:59:05OpenProcessTokenを使うらしいよ〜。
まあAPI一個じゃできませんな。
ttp://forums.belution.com/ja/vc/000/165/29.shtml
たまたま以前にシャットダウン特権取得する
処理書いてたからそんなのあったかなーと探してみた。
特権とか知らないとぐぐっても引っかからない気がするけどね。
>901や>903はどうやってぐぐったんだろう。
0909901
2006/08/15(火) 20:18:03しるかっつーの!!
0910デフォルトの名無しさん
2006/08/15(火) 21:21:090911デフォルトの名無しさん
2006/08/15(火) 22:50:42もっと高度な話だったのか・・・
0912デフォルトの名無しさん
2006/08/15(火) 23:15:11で、ググレってあおってたわけ?
0913デフォルトの名無しさん
2006/08/16(水) 00:00:36質問する前にまずググれよ、カス
0914904
2006/08/16(水) 00:31:07プロセスの実行権限が複雑になったらしい。
(トークンの概念はNT時代からあった。)
Vistaはこれをさらに強化したとか。
いずれこの辺の面倒臭い技術は避けて通れなくなるかも。
0915デフォルトの名無しさん
2006/08/16(水) 01:26:19ウインドウ閉じたときにでる確認ボックスでいいえを選んだらもう一回
ボックスが出るんですけど何ででしょうか?
0916デフォルトの名無しさん
2006/08/16(水) 01:28:230917デフォルトの名無しさん
2006/08/16(水) 03:14:22ファイル名の取得はどうすればいいんでしょうか?
0918デフォルトの名無しさん
2006/08/16(水) 03:16:210919デフォルトの名無しさん
2006/08/16(水) 10:51:00テキストやらビットマップやら各種OLEデータも受け付ける場合はこっち
0920デフォルトの名無しさん
2006/08/16(水) 14:52:06複数行エジットコントロール(自動スクロールバー付き)を貼り付けてみました。
ところが、垂直スクロールバーの方は、行がウィンドウの高さ以上になればちゃんと自動で出て来くるし、
ウィンドウ内に納まる状態になれば、きちんと使用不可状態になるんですが、
水平スクロールバーが、文字列の長さがウィンドウ以上になった後、
改行してはみ出さなくしても、そのまま、前にはみ出したところまで
スクロールできるままの状態になり、戻りません。
これを直すにはどうしたらいいでしょうか?
ちなみに、メモ帳(本物)でもそうなっているようです。
0921デフォルトの名無しさん
2006/08/16(水) 15:01:57ちなみにディはDHIで出せます
0922デフォルトの名無しさん
2006/08/16(水) 15:19:04FindFirstFile( "*.*", ... と
FindFirstFile( "*", ... って、
列挙結果に違いあるんですかね?
(そもそも *.* としたときに . を含まないファイルやフォルダにマッチするのは、何故?)
0923デフォルトの名無しさん
2006/08/16(水) 15:23:530924デフォルトの名無しさん
2006/08/16(水) 16:02:55仕様らしい。
救いなのは*.*で全取得が可能な事。
おれはFindFirstFileに*.*を指定して全取得して、
自分で納得いくマッチ処理でフィルタリングしてる。
自分でマッチ処理を書くのが面倒ならPathMatchSpecというAPIがある。
このAPIは聞いた話だとFindFirstFileよりはマシらしい。
0925デフォルトの名無しさん
2006/08/16(水) 16:12:51なんか勘違いしてる余寒
0926デフォルトの名無しさん
2006/08/16(水) 16:22:510927デフォルトの名無しさん
2006/08/16(水) 16:36:37ありがと。おかげで解決しました
0928デフォルトの名無しさん
2006/08/16(水) 16:48:200929デフォルトの名無しさん
2006/08/16(水) 17:41:270930デフォルトの名無しさん
2006/08/16(水) 22:38:52なんか勘違いしてる余寒
0931デフォルトの名無しさん
2006/08/17(木) 06:05:35DefWindowProc(NULL, 0, 0, 0)
とやってるのがありますが、どういう効果があるんでしょうか
0932デフォルトの名無しさん
2006/08/17(木) 08:53:400933デフォルトの名無しさん
2006/08/17(木) 11:16:370934デフォルトの名無しさん
2006/08/17(木) 13:38:07GUIとc++のライブラリ使いたいんで・・・
0935デフォルトの名無しさん
2006/08/17(木) 13:41:020936デフォルトの名無しさん
2006/08/17(木) 14:08:24その辺を網羅した参考書って出てる?
0937デフォルトの名無しさん
2006/08/17(木) 14:22:460938デフォルトの名無しさん
2006/08/17(木) 14:23:300939デフォルトの名無しさん
2006/08/17(木) 14:52:00UNICOWSはMSLUの別名。
>>934
<algorithm>のstd::max, std::min関数と
<windows.h>の中のどこかのヘッダにあるmax, minマクロで、名前がかぶっているのがまずい。
<windows.h>がインクルードされるより前にNOMINMAXを定義(#define)して、
maxとminのマクロが定義されないようにする必要があるはず。
0940デフォルトの名無しさん
2006/08/17(木) 16:59:23フォーマルな読み方はありますか?
0941デフォルトの名無しさん
2006/08/17(木) 17:07:420942デフォルトの名無しさん
2006/08/17(木) 17:34:360943デフォルトの名無しさん
2006/08/17(木) 20:18:01フォントリンクによってTextOutで描画される場合の
描画幅を得るにはどうすればいいんでしょうか?
0944デフォルトの名無しさん
2006/08/17(木) 21:28:560945デフォルトの名無しさん
2006/08/17(木) 21:49:19http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_animatewindow.asp
0946デフォルトの名無しさん
2006/08/17(木) 21:51:21使えるんですね。ありがとうございました。
0947デフォルトの名無しさん
2006/08/18(金) 00:15:53WM_QUERYENDSESSIONでシャットダウンを検知した後、
全ウィンドウの後始末処理をさせるためPostQuitMessage(0)を実行して、
後始末が完了するまでまで待つ。という処理を行っているのですが、
WM_QUERYENDSESSIONが通知された後にPostQuitMessage(0)を実行した場合、
GetMessageがブロッキングしたまま終了してくれず、後始末完了まち状態で固まってしまいます。
GetMessageがブロッキングしたまま固まるのは仕様なのでしょうか?
0948947
2006/08/18(金) 00:17:45WM_QUITが伝わってほしいのですが、WM_QUERYENDSESSION後だと伝わらないので困っています。
0949デフォルトの名無しさん
2006/08/18(金) 00:49:02> WM_QUITが伝わってほしいのですが
PostQuitMessageについて激しく勘違いしてる悪寒
0950デフォルトの名無しさん
2006/08/18(金) 09:31:06スタイル外すとちゃんと設定した大きさで表示される。
なんでですか?
0951デフォルトの名無しさん
2006/08/18(金) 10:27:03#include <windows.h>
#include <iostream.h>
#include <fstream.h>
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow)
{
char buf[512];
// ifstreamのインスタンスを作る
// C言語のfopenと同じ
ifstream ifs( "input.txt" ) ;
// ofstreamのインスタンスを作る
// C言語のfopenと同じ
ofstream ofs( "output.txt" ) ;
// ifstreamのインスタンス(ifs)から1行読み込みbufに入れる。
while( ifs.getline( buf, sizeof(buf) ))
// ofstreamのインスタンス(ofs)を利用して読み込んだ内容を書き込む
ofs << buf << endl;
return 0;
}
0952デフォルトの名無しさん
2006/08/18(金) 10:30:15「コールバックとか登録」って何?
あと <iostream.h> <fstream.h> は古いからやめなさい。
<iostream> <fstream>を使え。
0953デフォルトの名無しさん
2006/08/18(金) 10:43:39LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
とかです、よく考えるとあれはシステムに詠んで貰うためだから、
コンソールみたいな上から下に向かって順序良く進む場合はいらないんですか?
もし
#include <windows.h>
#include <iostream>
#include <fstream>
とした場合下のようなのが出て
error C2065: 'ifstream' : 定義されていない識別子です。c:\win32\win32\main.cpp 13
#include <windows.h>
#include <iostream>
#include <fstream.h>
とおくと
fstream.hは開けませんと出て
STLportで
#include <windows.h>
#include <iostream>
#include <fstream>
とおくと、下のように出て
error C2065: 'ifstream' : 定義されていない識別子です。c:\win32\win32\main.cpp
#include <windows.h>
#include <iostream>
#include <fstream.h>
とおくと、コンパイルできるんですorz設定を間違ってるのかな・・・
0954デフォルトの名無しさん
2006/08/18(金) 10:46:37WinMainなプログラムでウィンドウを開かず、必要な処理だけしてすぐに終了しても構わんし、
逆にmainなプログラムでウィンドウを開いてもよい。
0955デフォルトの名無しさん
2006/08/18(金) 10:48:44「namespace」でぐぐれ
0956947
2006/08/18(金) 10:52:38まぢですか。
とりあえず、GetMessageのブロッキングが解除されてほしいのですが…。
WM_QUERYENDSESSION後だとなにやってもメインループのGetMessageが制御を返してくれません…。
0957デフォルトの名無しさん
2006/08/18(金) 10:54:29あ・・・・・・そういえばそんなのがありましたね、忘れてました。
0958947
2006/08/18(金) 11:20:30なんか勘違いしてたかも。
質問は無視しちゃってください。
0959950
2006/08/18(金) 11:44:34あほか!
0960デフォルトの名無しさん
2006/08/18(金) 16:43:51描画したい(最終目的は親ダイアログに貼られているビットマップを
透過しているように見せかける)。
┌────┐──────┐
│ タブ1 │ タブ2 │ここの余白の色を変えたい
│ └──────┴───────────┐
調べた限りでは、オーナードローをするしかないのかな?と思うんだけど、
オーナードローだと、タブの部分もちまちま描くのがマンドクセだし、さらに
XPのVisual Styleにも対応しなきゃいけないので、さらにマンドクセ('A`)('A`)
他に簡単にできる方法があれば教えてください。
0961デフォルトの名無しさん
2006/08/18(金) 17:05:180962デフォルトの名無しさん
2006/08/18(金) 19:26:03早速作ってみたです。
バッチリです。これなら普通の人にはバレないくらいにちゃんとできてるです。
ありがとうございました。
やっぱPGに一番必要なのは、関数を覚えることよりもやわらかアタマだねぇ。
と毎度のことながら痛感させられました。
0963デフォルトの名無しさん
2006/08/18(金) 19:49:04目からうろこ。詳しくお願いします。
0964デフォルトの名無しさん
2006/08/19(土) 01:45:44どの API を使えば良いのでしょうか。
Vista であれば WMI を使って切り替えられるのは分かったのですが、2000/2003/XP
では WMI を使って切り替えることは出来ないようで。
0965デフォルトの名無しさん
2006/08/19(土) 02:39:36netshじゃ駄目かのう
0966デフォルトの名無しさん
2006/08/19(土) 02:51:56どもです。
netsh の dump/exec を使ってみましたが、ネットワーク接続の有効/無効を
切り替えることは出来ないようです。
0967デフォルトの名無しさん
2006/08/19(土) 05:25:38すまん、オレも知りたい。
WM_PAINT の時に子コントロールの画像をマスクするわけか?
というか、タブの形をどうやって知ったんだ?
0968デフォルトの名無しさん
2006/08/19(土) 08:18:27リージョンですかね・・・
予想まきこ
0969デフォルトの名無しさん
2006/08/19(土) 11:04:45DleteObject() で開放しなくてもいいんですよね
0970デフォルトの名無しさん
2006/08/19(土) 11:28:08そいつにDrawItemでタブの下に隠れた背景を描画するようにしたらどうだろう?
いずれにせよ>>961-962の解答待ちw
0971デフォルトの名無しさん
2006/08/19(土) 11:43:47変更された時のみ更新をかけるっていう事やりたいんですけど単純に
if(HIWORD(wParam) == CBN_SELCHANGE)
処理;
とかでやるとすべてのコンボボックスが対象になってしまうと思うんですけど
これを回避するにはどうすればいいんでしょうか?
0972971
2006/08/19(土) 11:57:570973971
2006/08/19(土) 12:02:32if(HIWORD(wParam) == CBN_SELCHANGE && lParam == HWND)
処理;
ちなみにこの場合、HIWORDとLOWORDに分けなくていいんでしょうか?
0974デフォルトの名無しさん
2006/08/19(土) 12:18:52http://windowssdk.msdn.microsoft.com/en-us/library/ms647591.aspx
WM_COMMANDを受け取ったときのlParamにはコントロールのハンドルが入っていることになっている。
ところでよくキャスト無しでLPARAM型とHWND型の値を比較できるな。
0975971
2006/08/19(土) 12:53:55すいません(´・ω・`)
0976デフォルトの名無しさん
2006/08/19(土) 14:38:45何も得られてないのに、何を解放しようというのだ。
0977デフォルトの名無しさん
2006/08/20(日) 04:00:39ファイル名を指定して個別にファイルを完全削除が行えますが、
GUI を使わずに、ごみ箱内のファイルリストを得たり、
ごみ箱ないのファイルに操作を行なうには、どうしたら良いのでしょうか?
SHEmptyRecycleBin と SHQueryRecycleBin では期待していることができなさそうです。
0978デフォルトの名無しさん
2006/08/20(日) 04:07:32そん中を思う存分漁るといい
0979977
2006/08/20(日) 05:30:16ありがとうございます。
あまり、Win32 API に頼らなくて良かったのですね。
あとは、下記の情報でなんとかできそうです。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;136517
INFO2 が解析できないとダメっぽいですが orz
0980デフォルトの名無しさん
2006/08/20(日) 06:09:120982デフォルトの名無しさん
2006/08/20(日) 08:10:13たしかに、シェル回りことで日本語の情報は少ないよ。
0983デフォルトの名無しさん
2006/08/20(日) 08:19:270984デフォルトの名無しさん
2006/08/20(日) 08:20:040985デフォルトの名無しさん
2006/08/20(日) 09:22:42Win32API質問箱 Build45
http://pc8.2ch.net/test/read.cgi/tech/1156032806/l50
0986デフォルトの名無しさん
2006/08/20(日) 18:02:20int _tmain(int argc, _TCHAR* argv[])
{
::MessageBox(NULL, "aaa", "bbb", MB_OK);
return 0;
}
このプログラムをビルドすると
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [4]' to 'LPCWSTR'
というエラーが出るのですが、そんな事はどうでも良くて
埋め
0987デフォルトの名無しさん
2006/08/20(日) 18:10:430988デフォルトの名無しさん
2006/08/20(日) 20:13:020989デフォルトの名無しさん
2006/08/20(日) 20:18:180990デフォルトの名無しさん
2006/08/20(日) 20:21:06VERY COOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL!
0991デフォルトの名無しさん
2006/08/20(日) 21:39:520992デフォルトの名無しさん
2006/08/20(日) 21:44:300993デフォルトの名無しさん
2006/08/20(日) 23:34:210994デフォルトの名無しさん
2006/08/21(月) 00:04:590995デフォルトの名無しさん
2006/08/21(月) 05:19:370996デフォルトの名無しさん
2006/08/21(月) 08:49:120997デフォルトの名無しさん
2006/08/21(月) 08:50:070998デフォルトの名無しさん
2006/08/21(月) 08:55:070999デフォルトの名無しさん
2006/08/21(月) 08:57:47な、なら何かのボタンにbmp貼り付けは…?
それも出来ないとしたら、ボタンぽいのを自分で書くしかないんですかね
1000デフォルトの名無しさん
2006/08/21(月) 08:58:4510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。