Win32API質問箱 Build17
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG最低限、最新スレくらいは質問する前に検索ぐらいしてください。
過去スレ・参考は>>2-5くらいを参照してください。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGBuild15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:http://pc2.2ch.net/test/read.cgi/tech/1065328397/
Build13:http://pc2.2ch.net/test/read.cgi/tech/1059549320/
Build12:http://pc2.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc2.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc2.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc2.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc2.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com
0005デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
0006デフォルトの名無しさん
NGNG×過去すれ17
○過去すれ16
0007デフォルトの名無しさん
NGNG* 、-'ヾ'''ヾ`"''','、、 , _____
_-'" `;ミ、 /:::::::::::::::::::::::::\〜
_-"ミ;ノリ人ノノヘ/リ; `゛゛ ミ /::::::::::::::::::::::::::::::::::::::\〜
>ミ/ 'γ、` ミ |:::::::::::::;;;;;;|_|_|_|_|〜
了| "~`、 "~"` {,',; ;} 。 |;;;;;;;;;;ノ∪ \,) ,,/ ヽ〜
"7 `⌒` ⌒ }ミ:. { |::( 6∪ ー─◎─◎ )〜
'| / レリ* |ノ (∵∴ ( o o)∴)〜
+ i ( }ィ' |∪< ∵∵ 3 ∵> ハァハァ
` ー--- /|` + \ ⌒ ノ
ヽ  ̄ / |__ \_____/
`i、-- '´ |ソ:
↑ ↑
JAVAプログラマー Winプログラマー
0008デフォルトの名無しさん
NGNGわけわかんないw
0009デフォルトの名無しさん
NGNGこの違いはなんですか?
0010デフォルトの名無しさん
NGNGJavaもWinもいじるという一番多いパターンの人はどうなるんだよ。
おそらく大部分の人間がそうだぞ。
0011デフォルトの名無しさん
NGNG─、、
(゚皿゚ O)
/ ̄/ >>
| ̄| | |
@/\ \@/
/'/ /'/
| | | |
-┛ -┛
0012デフォルトの名無しさん
NGNG人ですらねぇのかよw
0013デフォルトの名無しさん
NGNG高見盛?
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGあの、リストビューを作ったのですが
行の削除の仕方はわかりますが、列の削除方法がわかりません。
どのAPIを使えばいいのでしょうか?
0016デフォルトの名無しさん
NGNGListView_DeleteColumn
0017デフォルトの名無しさん
NGNG。ρ。 ううっ!出るっ!!
ρ  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
mドピュッ
C|.| /⌒⌒⌒ヽ/~ ̄ ̄ ̄ ̄ヽ
/⌒ヽ⌒ヽ___ | ∴ヽ 3 )
./ _ ゝ___)(9 (` ´) )←>>1-16
/ 丿ヽ___,.───|彡ヽ ―◎-◎-|
_/ ) ( Y ̄ ̄ ̄ ̄)
(__/ \____/
0018デフォルトの名無しさん
NGNG吹いて唾が飛んじまったよ。(w
0019デフォルトの名無しさん
NGNG下記のようなコードで動画を再生させることはできたのですが、
MM_MCINOTIFY受信後にデバイスを閉じる為にMCI_CLOSEを行なうと
NT系で一瞬タスクが切り替わってしまいます。
ウィンドウモードの場合は問題は無いのですが、フルスクリーン
モード(DXによる排他制御)だとアプリケーションが最小化されて
しまうので困っています。この現象を回避する方法をご存知の方、
いらっしゃいましたら宜しくお願いします。
//ムービーを再生させるまでの処理
mciOpen.lpstrElementName = szFile; //ムービーへのファイルパス
mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT, (DWORD)&mciOpen);
mciWindow.hWnd = g_hWnd; //デバイス提供先をアプリケーションへ
mciSendCommand(wID, MCI_WINDOW, MCI_DGV_WINDOW_HWND, (DWORD)&mciWindow);
SetRect(&mciPut.rc, 0, 0, 800, 600); //出力矩形を設定(クライアント全体)
mciSendCommand(wID, MCI_PUT, MCI_DGV_RECT | MCI_DGV_PUT_DESTINATION, (DWORD)&mciPut);
mciPlay.dwCallback = (DWORD)g_hWnd; //再生開始
mciSendCommand(wID, MCI_PLAY, MCI_NOTIFY, (DWORD)&mciPlay);
//...
//MM_MCINOTIFYを受け取ったらデバイスを閉じる
mciSendCommand(wID, MCI_STOP, MCI_WAIT, (DWORD)&mciParms);
mciSendCommand(wID, MCI_CLOSE, MCI_WAIT, (DWORD)&mciParms);
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG新しい形式のウィンドウを出すにはどうしたらいいのでしょうか?
ENABLEHOOK すると履歴などの部分がないウィンドウになってしまいます。
0022デフォルトの名無しさん
NGNGあの質問よろしいでしょうか。
ListView_InsertColumnで、列を5列作成して、
その後、ListView_DeleteColumnで、5列全てを削除した後に、
列をListView_InsertColumnで2列追加したら、何故か、削除したつもりの5列の2列ぐらいが残ってしまいます。
何回繰り返してもそうなります。
ListView_DeleteColumnは、2列分、FALSEを返すので、
何かエラーがあると思われますが、
どの点に問題があるのかわかりません。
列を削除する際、何か特別な事でもするのでしょうか?
0023デフォルトの名無しさん
NGNGたぶん、ListView_DeleteColumn(index=0,1,2,3,4) の順で削除しているのが原因。
index=3 を削除しようするとき、残りの列はいくつか考えてみよう。
002422
NGNGそのとおりでした。
私の勘違いです。
index=4,3,2,1,0の順で削除しないと、おかしいですよね。
5列分の一列消せば、全体の数が4になり、順々に減っていきますんね。
勘違いでした。
ご返答ありがとうございます。
馬鹿な質問してスイマセン。m(__)m
0025Star
NGNG↑問題のソース
C・C++とHSPで、サイズ(1024/2,768/2)のウィンドウを表示するという、同じ様なプログラムを作ったのですが、
なぜかC・C++の方が若干ウィンドウサイズが小さく、長い間悩みましたがどうしてもサイズが合いません。
なぜこの様な状態になるのかわかる方がいらっしゃったら、ご教示ください。
0026デフォルトの名無しさん
NGNGそれに対して、CreateWindowのサイズはウィンドウのサイズ。
だから、枠の分だけCで組んだ方が小さくなる。
…と、思ったんだがどうだろ?
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG| 次でぼけて! |
|________|
∧∧.||
( ゚д゚)||
/ づΦ
0029Star
NGNGhttp://yi-soft.udap.jp/images/Wnd_with_HSP.png
↑それぞれのウィンドウ
http://yi-soft.udap.jp/images/Wnd_Overlapped.png
↑重ねたウィンドウ
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGAdjustWindowRectEx()を使ってウィンドウサイズを調整しれ。
0032デフォルトの名無しさん
NGNG一度ウインドウを作った後、ウインドウとクライアントのサイズの差を取って
自前で計算するのが正しいやり方
0033デフォルトの名無しさん
NGNGこの型って、C#だとそれぞれ、IntPtr、uint, IntPtr
でOK?
0034Star
NGNG差を取るにはどうすればいいんですか?
0035デフォルトの名無しさん
NGNGそれ以上使いたい場合は何を使えばいいのでしょうか?
検索のヒントだけでも教えてください
0036デフォルトの名無しさん
NGNG画面の大きさに対し、メニューの数が十分少ないと分かってるのなら、Adjustで良いんじゃないの?
そもそも、その微妙な調整でだって、メニューの段数が変わる可能性もあり得ないわけではない。
0037デフォルトの名無しさん
NGNGNT系使え
サイズ制限なし
0038デフォルトの名無しさん
NGNG幅を決めてから高さを決めるような二段式にすれば
システムのプロパティいじったり、動的にメニューを変えない限り
問題なく決定できるけど。
0039デフォルトの名無しさん
NGNGなるほど納得。
0040デフォルトの名無しさん
NGNG9xの場合はどうすればいいんですか?
0041デフォルトの名無しさん
NGNGおそらくヘッダが古い。
新しいサイズの OPENFILENAME 構造体が必要。
004240
NGNGおじゃましました
0043デフォルトの名無しさん
NGNG多少重くてもいいならリッチエディット、それがいやなら自作するなりどっかから
ライブラリ・コンポーネントを拾ってくるなり。
0044デフォルトの名無しさん
NGNGあるいはヘッダが最新でも#define _WIN32_WINNT 0x500
してないとか
0045デフォルトの名無しさん
NGNGゲットしたいのですが
どこから取り掛かればよいでしょうか?
Cと普通のAPIなら使えます。
0046デフォルトの名無しさん
NGNGttp://www.cqpub.co.jp/hanbai/books/33/33191.htm
0047デフォルトの名無しさん
NGNGthx
難しそうなのでやめました。
0048デフォルトの名無しさん
NGNGttp://www.jrcphs.jp/j300v/download.html
これのドライバのI/Fわかればなんとかなる
0049高校生
NGNG要するに、メニューとか何とかがからんで、画面の描画する領域が狭くなってしまうということかな?
とすると……。
//Winはウインドウサイズ、Cliはクライアントエリア
RECT Win Cli;
//それぞれ取得する。
GetWindowRect(hwnd, &Win);
GetClientRect(hwnd, &Cli);
//ウインドウのサイズを計算して、
Win.right -= Win.Left;
Win.bottom -= Win.top;
//ウインドウのリサイズ
SetWindowPos(hwnd, hwnd, 0, 0,
(Win.right - Cli.right) + 640,
(Win.bottom - Cli.bottom) + 480,
SWP_NOMOVE | SWP_NOZORDER);
学校からだからタイプミスしているかもしれないけど。
0050デフォルトの名無しさん
NGNG005121
NGNG米国インテルのWebサイトに情報があり
まさにそのようですね
SDKをupdateしてみました。
標準のヘッダとライブラリを無視する設定にしたので
新しいヘッダを読んでいる筈なのですが
状況は変わりません。
sizeof(OPENFILENAME)を表示させるとあいかわらず76のままです
あたらしいものは88なんですよね?
0052デフォルトの名無しさん
NGNGついでだから SetWindowPos の最後の引数に
SWP_NOACTIVATE もつけてあげて。
非アクティブなウィンドウでそれをやられて
悩んだ事があった。
0053Star
NGNG教えてくださった方々、ありがとうございました。
0054デフォルトの名無しさん
NGNG漏れだけかもしれないが、無印.NETだとどうやっても新しい方での
表示はできなかった
.NET 2003だと無問題でアッサリできたYO!
0055デフォルトの名無しさん
NGNGユーザにダイアログからフォントを指定してもらって、
印刷ダイアログの返す DC にフォントや MM_TEXT 等を設定して
TextOut で1文字ずつ描画してるんですが、予想される文字サイズと違います。
1 pt = 1/72 インチ
1インチ = 2.54 cm
なはずなので、
16 pt = 5.64 mm
72 pt = 25.4 mm
ぐらいに印刷されると思うんですが
どう考えても文字サイズが小さすぎます。
どこで計算を間違えているのか分かりません。
予想されるミス、ありがちなミスは何でしょうか。
どなたかよろしくお願いします。
0056デフォルトの名無しさん
NGNG開発環境上のinclude/libディレクトリの指定は、ちゃんと新しい方が上位になってるよな?
0057デフォルトの名無しさん
NGNGフック対象アプリのエディットコントロールに対してEM_GETSELTEXTを送るフックアプリがあるとします。
フックアプリはUNICODEビルド、フック対象アプリはマルチバイトビルドされているとします。
この場合、EM_GETSELTEXTで得られる文字列はUNICODE or マルチバイト どちらなのでしょうか?
0058デフォルトの名無しさん
NGNG16pt=16/72インチの長さを得るためには、
解像度96dpiなら 16 / 72 * 96 = 約21ドット必要。
解像度300dpiなら 16 / 72 * 300 = 約67ドット必要。
同じ16pt(16/72インチ)でも、解像度によって必要なドット数は変わってくる。
例えば、解像度96dpi用にラスタライズされた16ptのフォントを、300dpiのプ
リンタで印刷すると、本来必要な67ドットに対して21ドットしかないので、約
5ptの大きさで印刷されてしまう。
というわけで、
>予想されるミス、ありがちなミス
は、解像度関係と予想してみますた。
これ以外が原因なら私には分かりませんな。
0059デフォルトの名無しさん
NGNGちょっと考えてみるか、実際に試してみるとすぐに解るが、
フック対象はEditコントロールではないのか?
0060デフォルトの名無しさん
NGNGしまうのですが、これを回避させる方法ってありませんか?
ctrl-Q で復活はするのですが。
0061デフォルトの名無しさん
NGNGユーザーがログオンした、ログオフした、ということを
通知してくれるようなAPIってないですか?
0062デフォルトの名無しさん
NGNGサブクラス化してオリジナルのスクロールバーを作っています。
WM_PAINTを横取りして、それらしい絵を描画しました。
左マウスアップ時に標準のスクロールバーがしゃしゃり出てきてしまうので
再描画をかけようとするのですが、WM_LBUTTONUPをフックできません。
Spy++で確認するとWM_LBUTTONUPは発行されているようです。
WM?RBUTTONUPなどは正常にフックできるのですが、なぜでしょうか?
0063デフォルトの名無しさん
NGNG簡易編集モードになってない?
0064デフォルトの名無しさん
NGNGサービス作れば?
0065デフォルトの名無しさん
NGNGサービスだとどんなAPIで実現できるんですか?
0066デフォルトの名無しさん
NGNGWinXP の WTSRegisterSessionNotification() みたいなものが欲しいってことか?
0067デフォルトの名無しさん
NGNG"あい"と入力して、"愛", "合い", "会い"とリストを取得するコードです。
ImmGetConversionListのGCL_CONVERSIONを使用しています。
取得できるリスト(候補)が、エディターなどでIMEを普通に使う時に比べて明らかに少ないのですが、
何か原因は考えられますでしょうか?
Win2000で開発しています。
0068デフォルトの名無しさん
NGNGスクロールバークラスを使用するより、自分でスクロールバーを作ってしまった
方が良いのでは・・・。
0069デフォルトの名無しさん
NGNGMSDNの、メッセージに対するデフォルトの処理の項目を見た?
WM_PAINTじゃないところで描画してない?
007040
NGNGレスアンカー間違えてますか?
0072デフォルトの名無しさん
NGNGはい、似たようなAPIがないものかと。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG前スレでそんな話題があったような気がする
0076デフォルトの名無しさん
NGNGWindows 2000だと来ないみたいです。
0077デフォルトの名無しさん
NGNGwin2kではサービス作るしかないね。
0078デフォルトの名無しさん
NGNGサービスではどう実装するんですか?
0079デフォルトの名無しさん
NGNGってどうやって解釈したら言いのでしょうか?
DR5の意味が理解できません
0080デフォルトの名無しさん
NGNGprintfなどで標準出力への出力を行なっていて
その出力内容を見たいのですが可能でしょうか?
子プロセスの標準出力をパイプで持ってくる場合の
サンプルは見つかったのですが自分自身の場合が
見つかりませんでした。
よろしくお願いします。
0081デフォルトの名無しさん
NGNGスレも違うし内容も意味不明
0082デフォルトの名無しさん
NGNGSetStdHandle()?
0083デフォルトの名無しさん
NGNGTRUE なら新しいプロセスにハンドルを継承させるかを指定します となってるんですが、
ハンドルの継承とはどういうものなのでしょうか?
0084デフォルトの名無しさん
NGNGそのまま子プロセスでも使えるというものです。
0085デフォルトの名無しさん
NGNGもともとの根源はWM_PAINT以外で描画が行われているということなので、
こちらの方向で解決策を見つけます。
WM_PAINT以外でどのメッセージを捕捉すればシステムに描画させなくて済みますか?
0086デフォルトの名無しさん
NGNGなるほど。
ありがとうございました。
008780
NGNGHANDLE hOldStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hStdIn, hStdOut;
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
CreatePipe(&hStdIn, &hStdOut, &sa, 0);
SetStdHandle(STD_OUTPUT_HANDLE, hStdOut);
// 標準出力への出力
SetStdHandle(STD_OUTPUT_HANDLE, hOldStdOut);
CloseHandle(hStdOut);
// パイプから読み出し
CloseHandle(hStdIn);
とりあえずこんな感じでやってみたのですがパイプから読み出せませんでした。
設定後printfではなくWriteFileでGetStdHandle(STD_OUTPUT_HANDLE)の
ハンドルに出力するとパイプから読み出すことが出来るので設定は出来ているようなのですが…
パイプじゃ駄目なのでしょうか?
0088デフォルトの名無しさん
NGNGわざわざstdoutを変更すれば、あるいは
0089デフォルトの名無しさん
NGNG只の、共有メモリなら、OSの特権持てばなんでもありだろう。バーか。
009188
NGNGGUI.exe > out.txt
リダイレクトしたら一応見れるけど、しなかった場合は?
0092デフォルトの名無しさん
NGNG理解できないなら無理してレスするな。
なんで共有メモリの話になるんだ。
オマイもかなりバカっぽいぞ。
0093デフォルトの名無しさん
NGNG話だろう。シネヤ。見に糞なんぞWindowsのほうがまだましだよ。
0094デフォルトの名無しさん
NGNGオマイはカルシウム不足。もっと牛乳飲め。
0095デフォルトの名無しさん
NGNGオマイはタンパク質不足。もっとセエーキ飲め。
0096デフォルトの名無しさん
NGNGオマイはワンパク質不足。もっとジャイアン飲め。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGじゃあ俺たちは何を飲めばいいのか?
0100デフォルトの名無しさん
NGNGカルシウム飲めば?
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGニポン人はラクターゼ活性持続症では無いのでカルシウムをせこせこ取る必要はないのだそうです。
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG息を止めて飲めば大丈夫らしいよ。
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG無い。そしてPerlのCryptはAPIではない。
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNGぐぐってみたらマジじゃねーか
0111デフォルトの名無しさん
NGNGワロタ
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNGSetStdHandle()じゃ駄目っぽい?
ならfreopen()でファイルに出力してそれを読むとか。
0114デフォルトの名無しさん
NGNGfreopenだと大丈夫でした。
ありがとうございました。
0115デフォルトの名無しさん
NGNGbmpファイルを開くためのコモンダイアログを作っているのですが、
よく、コモンダイアログの右の部分に選択している画像を表示できる
機能のついているものを見かけますが、あれはSDKでは、どのように
すればよいのでしょうか?
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGム板って科学的な知見がそこいらへんのオバサン並みなやつばっかりだな (プ
0118115
NGNGフック関数とやらを使うようですね。ども。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGだからそんなに怒りっぽいとならカルシウム取れって。
それかスルーを覚えろ。
0121デフォルトの名無しさん
NGNG漏れはとにかく2chで他人にからみまくって仕事のウサ晴らししてる
って事を言いたいのだと思う。
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNGじゃ、いらいらするときにカルシウムを取ると
落ち着くというのは本当?
0124デフォルトの名無しさん
NGNGイライラしている瞬間に効くのは”糖” だから、カルシウムなんとかに入ってる糖が効いてるのだろう。
でもカルシウム不足は長期には脳をそういう方向に導くそうだよ。
0125デフォルトの名無しさん
NGNG0126115
NGNGコモンダイアログでやってみると、なんかすごく劣化したみたいな
ダイアログが開いてしまうのはなぜですか?
0127デフォルトの名無しさん
NGNGコモンダイアログだからです。
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGどうすればよいでしょうか?
0130デフォルトの名無しさん
NGNGモードレスダイアログを使っていてタブオーダーが効かないので
調べてみたらどうやらIsDialogMessage関数なるものをTranslateMessage関数の前に入れることで解決するようです。
ここでどうやらすべてのモードレスダイアログに対してIsDialogMessage関数を呼ばなくてはならないみたいです。
なのでモードレスダイアログを生成するたびにハンドルを集めてこなければならないので
あまりエレガントでは無いような気がするのですが何かいい解決方法はないのでしょうか?
0131デフォルトの名無しさん
NGNGキー入力を受け取るウィンドウは一つなんだから、
今アクティブなダイアログに対してだけ呼び出せばいいよ。
WM_ACTIVATEあたりでグローバル変数に突っ込んどけ。
0132デフォルトの名無しさん
NGNGShellExecuteの日本語説明はどこにあるんだ?
lpVerbをNULLにしたときの説明が見たいんだが
0134デフォルトの名無しさん
NGNGレスありがとうございます。
グローバル変数ですか。
うーんやっぱりこの処理にはグローバル(もしくはそれに近いもの)使うのが
一番綺麗にいく気がしますねぇ。
Win32APIってこんなんばっかりですねw
ありがとうございました。
0135デフォルトの名無しさん
NGNGttp://www.vector.co.jp/soft/win95/prog/se275624.html
これのomakeの中に入ってるHELPを俺は使ってる。
本体はHSPユーザ以外には役にたたないが、HELPは132みたいなやつには役に立つんじゃないかと思う。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGモードレスがわかってない
0139デフォルトの名無しさん
NGNGttp://www.microsoft.com/japan/msdn/library/ja/jpwinui/html/_win32_extractassociatedicon.asp
ExtractIconは「DestroyIcon関数を呼び出して破棄しなければなりません。」
と書かれているのに、ExtractAssociatedIconには破棄について書かれていません。
ExtractAssociatedIconで取得したアイコンは破棄しなくてもいいのですか?
0140デフォルトの名無しさん
NGNGWM_COPYDATA でデータを送る際、
SendMessage の 3 番目の引数にデータの送信元のウィンドウハンドルを指定する、
と書かれています。
送るべきウィンドウハンドルがない場合
(例えばコマンドラインからデータを送るようなツール) はどうすればよいのでしょうか?
試しに適当な値を設定して SendMessage を読んでも
ちゃんとデータを送れているのですが、それでいいのかどうか不安で。
0141デフォルトの名無しさん
NGNG問題なしと思われ
0142デフォルトの名無しさん
NGNG実現方法が分かりません。ヒントでも良いのでがお願いします。
0143デフォルトの名無しさん
NGNGMFCなら CFileFind、
APIだと、FindFirstFile/FindNextFile かな。
FindFirstFileの後で1回FindNextFileをやらないと、
1つ目のファイルを取得できないので注意。
0144デフォルトの名無しさん
NGNG_findfirstおよびその他の関連関数を見てください。
0145デフォルトの名無しさん
NGNGそういや、VC6.0の場合だけど、CFileFind の
GetFilePathには2バイト文字未対応のバグがあって、
例えば c:\言語機能\hoge というパスだと誤動作を
起こします。機能の「能」がMBCS Lead Byte + '\'
になってるから。
漏れは CFileFindExを派生させて
GetFilePathをオーバーライドして使ってます。
0146デフォルトの名無しさん
NGNG>>144
ありがとう^^
0147デフォルトの名無しさん
NGNGなるほど、サンクスです^^
0148大阪ジャイアン
NGNGITaskScheduler
0149デフォルトの名無しさん
NGNGあれは何か規格があるのでしょうか?SDKレベルでは無理ですか?
0150デフォルトの名無しさん
NGNG0151大阪ジャイアン
NGNG0152デフォルトの名無しさん
NGNGオマイ、覗きか?w
逮捕するぞw
0153149
NGNGダイアログエディタに何かのコントロール貼るだけ、
みたいなわけにはいかないんですかね?
0154デフォルトの名無しさん
NGNG2つ以上の考え方がある。
JPEG/MPEGとかの伝送に従ったものと、
ただ、ファイルシステムに従った伝送と、
リアルタイムを考慮したした、画像伝送とか。
それを決めてくれないと教えられない。
0155デフォルトの名無しさん
NGNGそんなので済ませたいならスレ違い。
0156デフォルトの名無しさん
NGNG#include <windows.h>
#include <stdio.h>
void main(int argc,char *argv[]){
long (_stdcall *a)(DEVMODE *,unsigned long);
a=ChangeDisplaySettings;
a=(long (_stdcall *)(DEVMODE *,unsigned long))0x77d382a4;
DEVMODE mode;
memset(&mode,0,sizeof(DEVMODE));
mode.dmSize=sizeof(DEVMODE);
mode.dmBitsPerPel=16;
mode.dmPelsWidth=800;
mode.dmPelsHeight=600;
mode.dmFields=1835008;
a(&mode,0);
}
0157149
NGNGそんな大袈裟なものじゃないんです。カメラをつなぐと、
NetMeeting やら、Media Encoder やらで画面を出せますよね?
ああいう何か共通のコントロールみたいなのがあるのかなと
思ったんです。
>>155
もしコモンコントロールにあるのなら…と思ったのですが
そういうわけではないのですかね?どちらにしてもスレ違いでしょうか?
0158デフォルトの名無しさん
NGNG"C言語"というプログラミング言語で書かれた、
プログラムソースコードです。
0159デフォルトの名無しさん
NGNGフォーカスがはずれた要素を取得するにはどうしたらよいのでしょうか?
0160デフォルトの名無しさん
NGNGモニタの解像度を変えてるようだが…
しかしChangeDisplaySettingsを aにセットした後
0x77d382a4の即値をセットするのはなんでだ?
そんなんで動くのか?
0161デフォルトの名無しさん
NGNG動かしてみた。やっぱ、こうなるよなぁ〜。
console_foo.exe の 0x77d382a4 でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x77d382a4 を読み込み中にアクセス違反が発生しました。 。
0162159
NGNG0163デフォルトの名無しさん
NGNG前回選択時の複数ファイル名を表示させたい」
Win32APIのGetOpenFileNameでOPENFILENAME構造体のFlagsに
OFN_ALLOWMULTISELECT Or OFN_EXPLORERを指定し
ファイルの複数指定用のダイアログを表示します。
この際に前回このダイアログで指定した複数のファイル名を
ファイル名欄に表示させたく存じます。
例)"hoge_03.zip" "hoge_01.zip" "hoge_00.zip"
この場合にOPENFILENAME構造体のlpstrFileに
前回のファイルパス内容を保持した文字変数を代入させてから
このAPIをCallすればよいと思い
ドライブ名+ディレクトリ名|ファイル名|ファイル名|・・・||(|はNull)
をlpstrFileにセットしましたがダイアログ表示時に""で括った
複数ファイル表示の文字列として表示されません。
lpstrFileにはどのように文字列をセットすれば
ファイル名欄に""で括った複数ファイルを指定した文字列として
表示されるのでしょうか?
この際のOPENFILENAME構造体のパラメータの条件等について
ご存知の方、ご教授下さい。<(..)>
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG>前回選択時の複数ファイル名を表示させたい
GetOpenFileNameでそんな器用なことができるのかな
lpstrFileは単なる出力バッファと思ってたけど
0168デフォルトの名無しさん
NGNG> GetOpenFileNameでそんな器用なことができるのかな
> lpstrFileは単なる出力バッファと思ってたけど
できるよ。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGきれいに写らないんですがそれを直す方法がわかりません。
知ってるかたいたら教えてください。よろしくお願いします。
0171デフォルトの名無しさん
NGNGSetBkMode
0173デフォルトの名無しさん
NGNGListControlに関して、質問をしたいのですが。
アプリケーション定義比較関数内で、
下記の「lp1」と「lp2」に、必ず同じ値しか入らない(一番初めの項目しか参照されない)ため、
比較処理されません。
これは何に問題があるのでしょうか。
int CALLBACK MyCompProc(LPARAM lp1, LPARAM lp2, LPARAM lp3)
{
static LV_FINDINFO lvf;
static int nItem1, nItem2;
static char buf1[30], buf2[30];
lvf.flags = LVFI_PARAM;
lvf.lParam = lp1;
nItem1 = ListView_FindItem(hMWC_LIS, -1, &lvf);
lvf.lParam = lp2;
nItem2 = ListView_FindItem(hMWC_LIS, -1, &lvf);
ListView_GetItemText(hMWC_LIS, nItem1, (int)lp3, buf1, sizeof(buf1));
ListView_GetItemText(hMWC_LIS, nItem2, (int)lp3, buf2, sizeof(buf2));
if (sortsubno[(int)lp3] == 1)
return(strcmp(buf1, buf2));
else
return(strcmp(buf1, buf2) * -1);
}
0174デフォルトの名無しさん
NGNG>>166
(256以上の値を指定しろと書いてあったんで複数選択を考慮して)
nMaxFile=512
nMaxFileTitle=512
で設定しています。
>>168
1つのファイル名のみならlpstrFileにセットすれば
ファイル名欄にちゃんと表示されるんです。
(OFN_ALLOWMULTISELECT指定してもしなくても)
複数のファイル名をlpstrFileに指定して表示している
サンプルコードをネットで探してみたんですが、
一応にみなNullの初期化のみをして居るものしかなくて。。。
何方かこの様なことをして出来た方居られましたら
レス下さい。。。宜しくお願い致します。
0175デフォルトの名無しさん
NGNGItem毎に固有のlParamを設定していないからだと思われ。
0176173
NGNGそのとおりでした。
ありがとうございました。
0177デフォルトの名無しさん
NGNGめんどくさいから試してないけど、もしかしたらファイル部分を
"file1" "file2" "file3"
形式で渡すとか?
0178デフォルトの名無しさん
NGNGOFN_ALLOWMULTISELECT を指定して、出力形式と同じ形式で入力を
指定しても、先頭のディレクトリ部分しか参照されないのだから、
標準ではそのようなことはできないと考えるのが普通だろう。
OFN_ENABLEHOOK して WM_INITDIALOG あたりで設定すればいいのでは?
0179デフォルトの名無しさん
NGNGFNERR_INVALIDFILENAME
0180デフォルトの名無しさん
NGNG下の関数では値が不定になってしまいます。どこが悪いのかご教示くだされば幸いです。
// あらかじめint型グローバル変数wとhを宣言しておく
void BitMapBld(HWND hWnd, const char flname[], int px, int py){
HDC hDC, hDCBmp;
HBITMAP hBitmap;
BITMAP bmp;
hDC = GetDC(hWnd);
hDCBmp = CreateCompatibleDC(hDC);
GetObject(hDCBmp,sizeof(BITMAP),&bmp);
hBitmap = (HBITMAP)LoadImage(NULL, flname, IMAGE_BITMAP,
bmp.bmWidth, bmp.bmHeight, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
SelectObject(hDCBmp, hBitmap);
BitBlt(hDC, px, py, bmp.bmWidth, bmp.bmHeight, hDCBmp, 0, 0, SRCCOPY);
DeleteDC(hDCBmp);
DeleteObject(hBitmap);
ReleaseDC(hWnd, hDC);
w = bmp.bmWidth; h = bmp.bmHeight;
// WM_LBUTTONUPメッセージが来た時にwsprintf関数とMessageBox関数で
// 結果を表示するために、グローバル変数にコピーしておいている
return;
}
0181デフォルトの名無しさん
NGNGコンパチブルビットマップ作成後は1x1のモノクロビットマップだよ。
こうすれば動くんじゃないかなー。
// サイズはビットマップから自動取得
hBitmap = (HBITMAP)LoadImage(NULL, flname, IMAGE_BITMAP,
0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hDCBmp, hBitmap);
GetObject(hDCBmp,sizeof(BITMAP),&bmp);
BitBlt(hDC, px, py, bmp.bmWidth, bmp.bmHeight, hDCBmp, 0, 0, SRCCOPY);
SelectObject( hDCBmp, hOldBitmap );
DeleteDC(hDCBmp);
DeleteObject(hBitmap);
ReleaseDC(hWnd, hDC);
0182デフォルトの名無しさん
NGNGGetObject(hDCBmp,sizeof(BITMAP),&bmp);
は
GetObject(hBitmap,sizeof(BITMAP),&bmp);
で。
0183デフォルトの名無しさん
NGNGGetObject(hDCBmp,sizeof(BITMAP),&bmp);
は
GetObject(hBitmap,sizeof(BITMAP),&bmp);
で。
0184デフォルトの名無しさん
NGNG0186107
NGNGCryptと同じ様なAPIはなかったようなので
ぎこはにゃ〜ん作者様が提供しているソースから同機能を実現しました
0187デフォルトの名無しさん
NGNG恐れ巣だが、
MASAPICO'S Page の「関数別Win32サンプル集」が結構便利でよく使う
0188age
NGNG|  ̄`ミl==r'´ / Win32API -xp Reloaded-
`ヽ、_____j ヽ、____,-'
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGそうか?そんなこともないと思うが。
0191デフォルトの名無しさん
NGNG今時なのはなんなのよ?
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNGDel坊だろほっといてやれ。
0195デフォルトの名無しさん
NGNGご教授いただきたいことがあって、書き込みさせていただきました。
現在使用中のドライブ一覧を表示する関数を作成しているのですが、
USBに接続されているUSBメモリ、は「リムーバブルディスク」
USBに接続されているFDD、は「3.5インチFD」
と区別したいのですが、GetDriveTypeだとどちらも戻り値が「2」となり
区別ができません。
解決法をご存知の方がいらっしゃいましたらレスいただけますでしょうか?
よろしくお願いします。
0196デフォルトの名無しさん
NGNGジュワッ
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGだからさー、バージョンくらい教えろよ。
皆、忙しいんだからさー。お前の会社は馬鹿しかいないのかよw
0201デフォルトの名無しさん
NGNGそれも考えたのですが、RとRWとかもあるので、いっそのこと
ディスクのプロパティのなかの「種類」の文字列が取れないかと思ったのです。
「ローカル ディスク」とか「ネットワークドライブ」「リムーバブルディスク」
のような感じですね。
0202デフォルトの名無しさん
NGNGSHGetFileInfoでどうかな。
0203デフォルトの名無しさん
NGNG予言レスですか
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGhBrush = CreateSolidBrush(RGB(255,0,0));
hOldBrush = (HBRUSH)SelectObject(hdc,hBrush);
DeleteObject(hBrush);
SelectObject(hdc,hOldBrush);
EndPaint(hWnd,&ps);
↑
参考書のソースなんですが、
この様に、使用中のブラシ(hBrush)を破棄しても問題ないのですか?
気分的にSelectObject(hdc,hOldBrush)の後が良い気がするんですが・・・
0206デフォルトの名無しさん
NGNGmsdnに駄目って書いてある。
0208201
NGNGそのセンでいけそうですのでやってみます。
ありがとうございます。
結果は明日報告いたします。
0209大阪ジャイアン
NGNG0210デフォルトの名無しさん
NGNG>>202
ありがとうございました。
0211大阪ジャイアン
NGNG0212大阪ジャイアン
NGNG0213デフォルトの名無しさん
NGNGGetSystemDefaultLangIDあたりじゃダメ?
MultiLanguage環境の場合ユーザーごとに言語が違う可能性有るから、
現在のインターフェイス言語が知りたいならGetUserDefaultLangIDの方になるけど。
0214デフォルトの名無しさん
NGNGそのメニューウィンドウに描画されるメニューのハンドル(HMENU)を調べる方法はありますか?
0215デフォルトの名無しさん
NGNGMSDN検索してる?
0216201
NGNGあとでぐぐったら結構サンプルあってショボーン。(AA略。
でもSH系は盲点でした。
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGそしてそのMessageBoxは破棄(表示させない)ようにしたいと思っています。
現状は、そのウィンドウをフックしてMessageBoxのハンドルを手に入れてしまえば
とりあえず何とかなるだろうと思い、試行錯誤しています。
WM_CTLCOLORMSGBOXは、Windows32ビット版では使われていないようで、
簡単なサンプルプログラムをWin2k SP4にて作ってみましたが、実際送られてこないようです。
そのWin32版を探してみても見つかりません。
Win2000でメッセージボックスを出す前に出るメッセージ、
もしくは全く他の方向でも構わないのですが、何か方法がないものでしょうか?
0219デフォルトの名無しさん
NGNGMessageBox APIをフックする。
APIフックとか良く知らんが。
0220218
NGNGご回答感謝いたします。調べてみました。
なにやらidata 領域にあるAPI の実アドレスを
フック関数のアドレスに書き換えてしまうなど、なかなか興味深い事が書いてありました。
この方向でいろいろやってみます。
ありがとうございました。
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG根本的に考え直した方がいいんじゃないのか?
0224221
NGNG今の自分の方法だと一つ削除する毎にメニューが消えてしまうんです。
で、項目を一つ一つ削除するのが面倒だと感じたんです。
あるいは項目を選択しても消えないメニューを作れば良いよいのかもしれませんが、
こちらも方法が分かりません。
0225デフォルトの名無しさん
NGNG. \
\
\
\ ∩─ー、
\/ ● 、_ `ヽ
/ \( ● ● |つ
| X_入__ノ ミ メニューでやるなよwクマ・・・
、 (_/ ノ
\___ノ゙
/ 丶' ⌒ヽ:::
/ ヽ / /:::
/ /へ ヘ/ /:::
/ \ ヾミ /|:::
(__/| \___ノ/:::
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG0228214
NGNGGetMenu はメニューのオーナーウィンドウからメニューハンドルを得ることはできますが、
メニューウィンドウ自信(クラス名が"#32768"のウィンドウ)から、
そのウィンドウに関連づけられたメニューを得ることはできません。
0229デフォルトの名無しさん
NGNGCOM経由でそのような機能が提供されていたりしますか?
0230デフォルトの名無しさん
NGNG(&なんちゃらで指定する下線付きの文字)はできないんでしょうか?
&Aとかやると、そのまま&Aって表示されるので。
0231デフォルトの名無しさん
NGNGあ、悪い取り違えてた。
そもそも、メニュー自体にウィンドウハンドルってあったっけ?
あくまで「あるウィンドウに関連付けられた物」としてしか存在できなかったと思うんだが…
それって、見た目はメニューだけど実は他のもので代用とかしてない?
IEとか見たいにさ
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGHSP
0235デフォルトの名無しさん
NGNGメニュー自体もウィンドウだし、ウィンドウハンドルもある。
0236デフォルトの名無しさん
NGNGじゃあメニューのHWNDを取得するAPI教えてみろよ。
0237デフォルトの名無しさん
NGNG結局は教えてほしいだけの様な悪寒
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGすいませんこれってこういう書き方っていいんですか?→「szBuffer」
こういう引数ってどこから評価されるか未定義じゃないんですかね?
もし第4引数から評価されてたらおかしな結果になってしまいますよね?
(一応Win32API勉強してる途中でこういうコードがでたのでこのスレで)
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGまぁ、そういう書き方がいいか悪いは別だが。
0243デフォルトの名無しさん
NGNG>もし第4引数から評価されてたらおかしな結果になってしまいますよね?
ならない。
そんなこと言っているレベルなら、API の勉強をする前に
今一度ポインタの復習をした方がよいと思う。
0244240
NGNGバカな質問で申し訳なかったです。
0245デフォルトの名無しさん
NGNG#include<windows.h>だけじゃだめなんですか?
まったくの初心者をお救いください・・・(,,゚Д゚)†
0246デフォルトの名無しさん
NGNGClipboardクラスって.NETのやつか?
0247デフォルトの名無しさん
NGNG圧縮ファイルからメモリ上に解凍して、直接実行したいと思うのですが。
0248デフォルトの名無しさん
NGNGと適当かましてみる
0249デフォルトの名無しさん
NGNGAPIはないね
0250デフォルトの名無しさん
NGNGどうやったら分かるんでしょうか?
WM_KEYDOWN,WM_KEYUPでチェックしていると、別ウィンドウに行って
押されたり、離されたりした場合に取りこぼしがおきちゃうんですが。
0251デフォルトの名無しさん
NGNGGetAsyncKeyState
0252デフォルトの名無しさん
NGNGちょっと面倒になるけど、KeyboardHookで
0253デフォルトの名無しさん
NGNGthanxです。うまくいきまいた。
0254デフォルトの名無しさん
NGNG0. GetTempFileNameで一時的ファイル名を取得
1. CreateFileでEXEファイルを新規作成
2. CreateFileMappingでメモリ化、解凍先バッファとする
3. CloseHandle後、CreateProcess
ではあかんかえ?
0255デフォルトの名無しさん
NGNG使い方がよくわからないです。
取っ掛かりとしてサンプルコードないでしょうか。
Platform SDKの Indexing Service の項の英文眺めて悩んでます。
0256デフォルトの名無しさん
NGNGCoCreateInstance
0257255
NGNG頭悪くてわかりません。(-_-;
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNGkernel32.dllとntoskernel.exeのエクスポート関数のこと?
WIN32APIはカーネル関数のフレームワークなのか?
0260デフォルトの名無しさん
NGNGWM_CREATE の戻り値に -1 を指定すればウィンドウの作成を拒否することができますが、
CreateDialog() 等でダイアログを作成しようとした場合は、
WM_INITDIALOG ではダイアログの作成を拒否することができませんよね。
普通、コントロールの初期化は WM_INITDIALOG の中で行うと思うのですが、
コントロールの初期化に失敗した等の理由により、
ダイアログの作成を拒否したいケースもあると思うのです。
そのための方法を自分なりに考えてみたのですが、
グローバル変数に頼らざるをえなくなり、どうもスマートではありません。
スマートな方法があればぜひ教えていただきたいのですが…。よろしくお願いします。
0261260
NGNG0262デフォルトの名無しさん
NGNG作成を拒否するのは面倒そうなので、WM_INITDIALOG の中で EndDialog を
呼び出して即閉じてしまうのが簡単だと思います。
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNGIDataObject::EnumFormatEtcで受け取り可能なフォーマットを列挙させるとCF_TEXTが含まれていないのに
IDataObject::GetDataでCF_TEXTを要求すると正常なデータが取得できてしまいます。
この場合、CF_TEXTでの要求のまま実装して問題無いものでしょうか?それともGetClipboardFormat("UniformResourceLocator")で受け取るべきでしょうか?
0265デフォルトの名無しさん
NGNGカーネルやらデバイスドライバやらに外部とのやり取りを依頼する
でそのカーネルとかデバドラとのやりとりのためにインターフェイスが用意されてる
環境にもよるだろうけどそれのことをAPIとかシステムコールとか言っているのかな
多分int n命令を使ってそれらに処理をお願いすると思うのですが
具体的にいえばあるデバイスドライバとのインターフェイスを探しているのですが
そのためのライブラリがDLLという形でどこかに存在しているだろうときにどーやってそれを探し出せばいいのですか?
マニュアルかなぁ
誰か教えてください
ちなみにnational instrumentのデバイスです
疲れたポ
0266デフォルトの名無しさん
NGNG方法があります。
http://www.gijyutu.com/g-soft/automa/nt/automa_nt.html
0267デフォルトの名無しさん
NGNGよく読んでいないけどセキュリティホールではないのかな?
0268デフォルトの名無しさん
NGNG0269260
NGNGなるほど。WM_INITDIALOG の中で EndDialog() や DestroyWindow() を実行するのは
少し抵抗があったのですが、実験してみると確かに意図した通りの動作になりますね。
>>263
今回は例外処理を使う方法は見送りますが、参考になりました。
どうもありがとうございました。
0270デフォルトの名無しさん
NGNGドライバのインストールを許してる状況なら
セキュリティもクソもないでしょ
0271デフォルトの名無しさん
NGNGScrollWindow(hwnd,0,cyChar * (iVertPos - si.nPos),NULL,NULL);
UpdateWindow(hwnd);
このUpdateWindow()を使う意味が分かりません。なぜですか?
ScrollWindow()はWM_PAINTをプロシージャに送りますよね?
そのあとUpdateWindowでまた送ってもしょうがないんじゃないんでしょうか。
調べてみたところすぐに更新するにはUpdateWindow()を使えとのことなんですが、
どうも意味が分かりません。
0272デフォルトの名無しさん
NGNGウィンドウの更新領域が空でない場合、ウィンドウにWM_PAINT メッセージを送って、
そのクライアント領域を更新します。この関数は、アプリケーションキューを介さずに、
指定されたウィンドウのウィンドウプロシージャに直接 WM_PAINT メッセージを送ります。
更新領域が空のときには、メッセージは送りません。
0273デフォルトの名無しさん
NGNG>ScrollWindow()はWM_PAINTをプロシージャに送りますよね?
MSDN見てみたけど、更新リージョンを設定する、としか書いてないような気がするんだけど。
0274デフォルトの名無しさん
NGNG描画は時間がかかるので、WM_PAINTは優先順位が低く、
他のメッセージが先に処理され、その間にWM_PAINTが複数できると
1つにまとめられる。
UpdateWindowは、この後回しにされるキューにたまったWM_PAINTメッセージを
即送りつける機能がある。 別にWM_PAINTを直接送っているわけではない
0275デフォルトの名無しさん
NGNGWDMの勉強した方が早いと思う
0276デフォルトの名無しさん
NGNGcbClsExtraと、
cbWndExtraの、
使い方を教えてくれませんか?
0277デフォルトの名無しさん
NGNG用途を聞いてるのか用法を聞いてるのか分からんが一応
用途
cbWndExtraはMDIの子ウィンドウ管理に使える。
しかしそれに限定されているわけではないので(cbClsExtraも含め)好きに使え。
用法
GetWindowLong, GetClassLongあたりを見れ。
0278デフォルトの名無しさん
NGNGCtrl+Alt+Delで表示される「Windowsのセキュリティ」DialogBoxのタスクマネージャーボタンを
無効化したいのですが、方法がわかりません何かよい資料などありませんでしょうか?
FindWindow()でHandleを取得して、メッセージをHookすれば何とかなるかなと思ったんですが
上記のWindow名を調べる方法が判らず断念しました
0279デフォルトの名無しさん
NGNGなるほど。
ScrollWindow()はWM_PAINTをプロシージャに送るんじゃなくて、
クライアント領域を無効化して間接的にメッセージキューにポストしてるんですね。
直接送るものと勘違いしてました・・・
どうもありがとうございました。
0280デフォルトの名無しさん
NGNG経過時間の計算をしてるのですけど
途中でOSの時刻を修正されるとおかしなことになります。
OSの時刻に左右されずに経過時間を計るのにはどうしたらいいのでしょうか
0281デフォルトの名無しさん
NGNGGetTickCount()
TickCountは49.7日で巻き戻るし、PerformanceCounterは稀にサポートしていない環境が
あったりはするが。
0282280
NGNG24時間とかやるとなんか精度がよくなかったです。
0283デフォルトの名無しさん
NGNGありがとうございます!早速これらを使ってみたいと思います。
0284デフォルトの名無しさん
NGNGFindoWindowよりはEnumWindowのほうが良いかもね。
タスクマネージャを立ち上げさせたくないだけなら、フックのWH_SHELLで
HSHELL_TASKMANってのがあるみたい。
ただ、これでできるか試したことないけど。
0285デフォルトの名無しさん
NGNGQueryPerformanceCounterって動的にクロックが変動するCPUだとまずいらしいですね
GetTickCount()は49.7日で巻き戻るので使えないし(サーバなので1年とか稼動する可能性があるのです)・・うーん。
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNG時間差の大小を判断したら、49.7日目を跨いでも何ら問題ないと思うが。
0288280
NGNGレジストリの値を見て*49.7日足すしかないのでしょうか
うううそれだと49.7日たたないと動作確認ができない・・・
0289デフォルトの名無しさん
NGNGそれだと49.8日後に0.1日しか経過してないことになってしまいませんか?
0290デフォルトの名無しさん
NGNG前回の値を保存しておいて前回の値より値が低ければカウンタがリセットされたとして処理すればいいだけかと
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGなんとかその方法でやってみます
>>291
NTPとかでですか?
NTPサーバ立てる余地とかなくて。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGそんな事が出来たら、あなたはスーパーハカーになれます。
すなおにCtrl+Alt+Delを無効化すれ。
0296デフォルトの名無しさん
NGNGどうれくらいの頻度で呼ばれるか分からないけど、
毎回差分を取るとGetTickCount()の誤差が累積されると思う。
しかしサーバーなら、そうそうOSの時刻を大きく修正されることも無いと思うんだがなぁ。
まあ対応しておくにこしたことはないが。
0297296
NGNG0298280
NGNG49.7日越えはレジストリに記録されるらしいので
そこを取ってきます。
みなさんありがとうございました。
0299デフォルトの名無しさん
NGNGよーく考えるとわかりますが、GetTickCount そのものの精度はともかく、
「差分を積算すること」自体では誤差は蓄積されません。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGまた別の話だからかなり不正確だぞ。
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG長期的に見た誤差の累積について考えて出てきた案なんだが、却下か?
瞬間的な精度が必要な場合はハードでやった方がいい場合が多いだろ。
0304デフォルトの名無しさん
NGNG脳みそ足りないヤシは黙ってろよ。
0305デフォルトの名無しさん
NGNG__int64 な整数に時間を加算していくというのはどうか
0306デフォルトの名無しさん
NGNGMFCを使うと親ウィンドウの中央に表示されるのですが。
これは何故でしょうか。そしてMFCの様にウィンドウの中央に表示させられないでしょうか。
0307デフォルトの名無しさん
NGNG第4引数の定数を弄りなさい
0308デフォルトの名無しさん
NGNGWM_INITDIALOGでMoveWindowは?
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGそれはダイアログの場合でしょ。
0311デフォルトの名無しさん
NGNG>>293
サーバ立てなくてもNTPサーバにアクセスする環境があればいいよ
eric.nc.u-tokyo.ac.jpとか
0312デフォルトの名無しさん
NGNGフックだよ。
MFCのソース嫁。
それが面倒だったら諦めれ。
0313デフォルトの名無しさん
NGNGLRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch (msg) {
case WM_LBUTTONUP:
MessageBox(NULL , "", "", MB_OK);
SendMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd , msg , wp , lp);
}
↑のプログラム(WinMainは省略, ウィンドウを1つ作成)を実行させ、
ウィンドウ内で左クリックすると、1つ目のダイアログが出ます。
OKボタンを押さなければ、ウィンドウプロシージャを抜けないので、
メッセージループにも制御が戻らないと思ったのですが、
その状態で再び左クリックすると、もう1つダイアログが表示されます。
この挙動がいまいち理解できません。
なぜ2つ目のダイアログは表示されるのでしょうか?
0314デフォルトの名無しさん
NGNG抜けなくてもまた入ってくるけど。
メッセージボックスを移動させたりしたときにウィンドウを再描画するのは誰だい?
0315デフォルトの名無しさん
NGNG>MessageBox(NULL , "", "", MB_OK);
MessageBox(hwnd , "", "", MB_OK);
0316デフォルトの名無しさん
NGNGMessageBox(NULL , "", "", MB_OK | MB_TASKMODAL);
まあようするにMSDN嫁と
0317デフォルトの名無しさん
NGNG質問の意図はそういうことじゃないでしょ。
>>313
MessageBox内でも独自のメッセージループが回ってるわけで
結局はそこのDispatchMessageでウィンドウプロシージャに飛ばされ
そこで処理されると言うわけ。
0318デフォルトの名無しさん
NGNGMFCってずっとフックをインストールしっぱなしなんですか。
なんかフックって長い間インストールしてると固まったりする
原因になるイメージが有るのでちょっとびっくり。
0319デフォルトの名無しさん
NGNG↓
ダイアログとか表示させる
↓
コールバックでいじる
↓
フック終了
位置を変えるだけなら、直前で仕掛けて直後に閉めればいいべさ。
0320デフォルトの名無しさん
NGNGレスありがとうございました。
>MessageBox内でも独自のメッセージループが回ってる
この説明で納得できました。感謝します。
0321デフォルトの名無しさん
NGNGあ、勿論そうするつもりです。
ただMFCの場合、何時何処でWin32APIのMessageBox呼び出しても
親ウィンドウの中央に表示される所を見るとインストールしっぱなしなんだろうなと。
0322デフォルトの名無しさん
NGNGMFCのMessageBox呼んでるんじゃないか?それは。
WIN32APIのMessageBoxを直接呼んでそうなるとは思わないのだが。
0323デフォルトの名無しさん
NGNG試してみれば分かりますがそうなります。
0324デフォルトの名無しさん
NGNGフックもなんもないと思うのですが…。
0325デフォルトの名無しさん
NGNGされないから問題ないわけで。
0326324
NGNG確かにSDKだとされないですね。むむむ。
0327やよ
NGNG0328デフォルトの名無しさん
NGNGPCMデータ再生の前に一瞬ノイズが発生するのですが、これの回避方法って知りませんか?
waveOutPauseとwaveOutResetの間で1[msec]でも時間が経過してると発生するようです。
[例]
waveOutPause(hWaveOut);
// この間に経過時間があるとノイズがはいる↓
Sleep(1000);
// この間に経過時間があるとノイズがはいる↑
waveOutReset(hWaveOut);
waveOutWrite(hWaveOut, &WaveHeader, sizeof(WAVEHDR)); // ここでノイズ発生
ちなみにのwaveOutWriteの替わりにwaveOutRestartでもノイズが発生しました。
waveOut関数でサウンドプレイヤーをと思ってましたが、一時停止→停止→再生という手順で
ノイズがでるので困ってます。
0329デフォルトの名無しさん
NGNGプツッというノイズなら、サンプル値の不連続だろう。
停止の前後でフェードアウト・フェードインさせるとか、
補間用の中間値サンプルを捏造して挿入とか、
そういうのがいるんじゃないか?
0330デフォルトの名無しさん
NGNG多分デバイスの問題かと。
Resetしても一部のメモリが既に、
DirectSoundで言うところのプライマリサウンドバッファにコピーされてしまって、
キャンセルできない状態なんだと思う。
多分、その停止した状態で、別の音を鳴らすソフトを動かしてもノイズが出ると思うんだけど。
0331デフォルトの名無しさん
NGNGListView_(リスト関連API)の全リストが載ったサイトってありますか?
MSDN内を調べたのですが、見つかりませんでした。
0332デフォルトの名無しさん
NGNGcommctrl.h を読め
0333デフォルトの名無しさん
NGNGSDKドキュメントブラウザで”ListView_”をキーワードに入力すれば大抵のはでてくるが。
0334デフォルトの名無しさん
NGNGcommctrlって、CE?
0335デフォルトの名無しさん
NGNG( ゚д゚) <‥‥‥
0336デフォルトの名無しさん
NGNG気のせいだったか
0337デフォルトの名無しさん
NGNGcomctl32.lib
winmm.libとmmsystem.hとかもそうだよなぁ…
0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNG1つ目のスレッドは書き込みのみ、2つ目のスレッドは読み込みのみしか行わないのですが
「クリティカルセクション」とかを使わないとだめでしょうか。
0340デフォルトの名無しさん
NGNG4バイト以下だったら大丈夫なはず。(64bit環境なら8バイト)
参考までに、Interlocked系のAPIを見てみてね。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG読み取りと書き込みをアトミックに行える状況でないなら、
変更中のものを読んでしまう場合があります。
OKな例
・普通のintやポインタの読み書き
・unix系のファイルシステムで、書き込み側がtmpファイルとrenameを使う場合読み込み側はロック不要
(windows系はファイルエントリの扱いがアトミックかどうか明示してないので不明
0343デフォルトの名無しさん
NGNG場合によってはあるだろ。
0344デフォルトの名無しさん
NGNGCriticalSection使うことにします。ちょっと遅くなるとか聞いたんで。。
ありがとうございました。
0345デフォルトの名無しさん
NGNG2CPU(HT含む)またはそれまで想定するときは、
それがたとえ1 DWORDであっても、クリティカルセクションを定義する必要があります。
また1CPUのときでも、たとえばDWORDがDWORD境界にないような場合は、
ひとつのインストラクションの途中でページフォルトが発生し得るので、
その例外処理が完了して中断していたインストラクションの実行を再開する準備が整ったとき、
プロセス内のどのスレッドが一番最初にCPUのスケジューリングを勝ち取るかは、
多分、そのときの運次第と思います。
0346デフォルトの名無しさん
NGNG> 2CPU(HT含む)またはそれまで想定するときは、
> それがたとえ1 DWORDであっても、クリティカルセクションを定義する必要があります。
本当?
0347デフォルトの名無しさん
NGNG1bitのフラグの場合はどう?だめ?
0348デフォルトの名無しさん
NGNG前半は説明がないね。
後半、存在する側のページに
DWORDのたとえば半分だけが書き込まれることはないと思うけど・・・
しったか君かな?
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG境界越えアクセスできないCPUと妙な実装のコンパイラのセットならありえるかも
0351デフォルトの名無しさん
NGNG値を参照してその値を更新するような書き手が複数いるんであれば要ロック
0352デフォルトの名無しさん
NGNGあまり考えられないなー。そもそも Win32 API スレだしさ。
0353デフォルトの名無しさん
NGNGマルチライトが危険でワンライト・マルチリードなら安全
という考えは一見、正解のようにも見えるが
リード中にライトされるとずっこける可能性があるよな
リード動作がどんな条件でアトミックかをつきとめ、
その条件がアプリ全体の前提環境と整合するかどうか
確認が必要だね
0354デフォルトの名無しさん
NGNGそうだね。
多分だけど、実際には多分読み手(複数対応)のセマフォと書き手のセマフォを使う事になると思う。
0355デフォルトの名無しさん
NGNGACEあたりの使えばいいのかもしれんが。
0356デフォルトの名無しさん
NGNG>リード中にライトされるとずっこける可能性があるよな
どういう可能性?
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG特にWin32が動くやつで。
0359デフォルトの名無しさん
NGNGたとえば100KBのメモリを読み書きするとき
0360デフォルトの名無しさん
NGNGそれは、アトミックでないものをアトミックだと思って
使う奴が馬鹿なだけでは?コンパイラの実装とかも含めて。
0361デフォルトの名無しさん
NGNGはぁ、そうだけど?
0362デフォルトの名無しさん
NGNGそれじゃーーアトミックかどうかなんて考えるまでもないじゃん。
0363デフォルトの名無しさん
NGNGそうだけど。
すまんがなんで一生懸命なのか、いまいちよくわかってないんだが。
0364デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG345は、さすがにネタだろうと思うよ。
0367デフォルトの名無しさん
NGNG書き換わることあるの?
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR lpCommandLine,
:(以下略)
0368デフォルトの名無しさん
NGNGソース嫁! ソース!
0369デフォルトの名無しさん
NGNG完全にゼロか、そうでなきゃリスク管理ができてないと
0370デフォルトの名無しさん
NGNGこれに尽きると思うんだが誰も言わないねえ
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGだからメモリへの書き込み自体が行われていない。
当然、データの一部のみが書き込まれることなどあり得ない。
・・・はず。
0375デフォルトの名無しさん
NGNGボリュームをコントロールするのにオーディオミキサを使用し、
CDドライブ単位でコントロールをしたいと考えているのですが、
その方法が分かりません。
オーディオラインがどのドライブのモノなのか識別する方法は
無いのでしょうか?
0376デフォルトの名無しさん
NGNG0377328
NGNGwaveOutPause〜waveOutResetの間でSleep入れてましたが、
Sleepで間を置いてるからノイズが聞き取りやすかっただけで、
実際にはwaveOutPause→waveOutResetの手順をふむだけでノイズが発生してました。
このノイズ、どうやら直前まで再生していたPCMの音がほんの一瞬再生されるもののようです。
waveOutReset呼び出しの後、waveOutGetPositionで調べたら
再生位置はちゃんと0にリセットされてましたし何が原因なのかいまだに不明です。
ちなみに同じプログラムをふたつ実行させると、片方でPCMが再生されている間は
ノイズは発生しませんでした。
0378デフォルトの名無しさん
NGNGttp://www.microsoft.com/japan/msdn/net/general/win32map.asp
いつまでもWin32API使ってねぇで
.NET Frameworkに移行しろやゴルァ!ってこと?
0379デフォルトの名無しさん
NGNGまだまだ、半分くらいは対応出来てませんスミマセンってこったろ。
0380デフォルトの名無しさん
NGNGサウンドのデバイスドライバが原因かもしれん
0381デフォルトの名無しさん
NGNG0382375
NGNG可能ならばCDクラス内にボリュームメソッドを実装させたいと考えていたのですが、無いなら仕方ないですね。
ミキサクラスを作って実装させる事にします。
ありがとうございました。
0383デフォルトの名無しさん
NGNGがっているものは、アトミック操作が保証されない。Pentium 4 プロセッサおよびP6 ファミリ・
プロセッサは、外部メモリ・サブシステムによってこのようなスプリット・アクセスをアト
ミック操作にできるようにするバス制御信号を備えているが、アライメントの合っていない
データ・アクセスを行うとプロセッサの処理能力に重大な影響を及ぼすため、使用を避けるべ
きである。
0384デフォルトの名無しさん
NGNGソースを明示しようね!
0385デフォルトの名無しさん
NGNGソフトウェア・ディベロッパーズ・
マニュアル
下巻:
システム・プログラミング・ガイド」の7-3
どこにリンクされているかは、ちょっと分からない。
ググればあるかも。
0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNGファイルに格納するときって、アラインあんまり気にしないし・・・
0389デフォルトの名無しさん
NGNG日本語版。
0390デフォルトの名無しさん
NGNG> 32-bit boundary; otherwise, this function will fail on multiprocessor x86
> systems and any non-x86 systems.
ユニプロセッサのx86なら問題なし
0391デフォルトの名無しさん
NGNGでも、WinXPでの動作を前提にマルチスレッドで書くなら
まずいっしょ。
0392278
NGNG途中経過を報告します
>>284
当面、タスクマネージャーが立ち上がらなくなれば良いので試してみたのですが
WH_SHELLのHSHELL_TASKMANは、hookプロシージャーに送られて来ず駄目でした
>>295
アドバイスありがとうございます。NT系でのCtrl+Alt+Delの無効化って、msgina.dllを
置き換えるんですよね?
取り敢えず、最後の手段として他の方法を摸索してみます
>>338
レジストリをいじれば可能なんですか、ありがとうございます(ポリシーはちょっと
見てみたのですが出来ないようです)
ところで、設定に使われているレジストリキーの詳細な内容が解説されているサイトか
書籍があれば紹介して頂きたいのですがご存じないでしょうか?
0393デフォルトの名無しさん
NGNG387の言うようにメモリマップドファイルの時くらいじゃないの?
だから、あまり気にならないな。
0394デフォルトの名無しさん
NGNGダイアログ上に配置されたすべてのコントロールの大きさを
一定の比率で動的に変化させる便利な方法があれば教えてください。
例えば、ダイアログ自体が WM_SETFONT を受け付けてくれれば
よかったのですが、残念ながら動作してくれないようなので…。
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGファイルの中にあるDWORDデータとかのアライメントの話。
0397デフォルトの名無しさん
NGNGWinMain関数の中で、ウインドウクラスの登録とウインドウの作成の処理を
別関数にして行っているものがあります。
↓こんな感じ
int WinMain
{
MyRegisterClass()←ここでウインドウクラスの登録
InitInstance()←ここでウインドウの作成
メッセージループ
}
上のMyRegisterClass関数の中で、たいていは
WNDCLASSEX wc; ←関数内のローカル変数になっている。
wc.member=hogehoge;
RegisterClassEx(&wc);
なんて感じになってるんですが、
クラスを登録してしまった後は、このwcは破棄してしまってよいのでしょうか?
あとでウインドウを作成するときにクラスの名前は必要ですが、
この構造体自体は不要?
動くには動いていますが、ちょっと不安になった。
0398278
NGNG>当面、タスクマネージャーが立ち上がらなくなれば良いので試してみたのですが
>WH_SHELLのHSHELL_TASKMANは、hookプロシージャーに送られて来ず駄目でした
の追記です。
上記の操作はAppDesktopWindowのHookで、Ctrl+Alt+Delで呼び出されるLoginDesktopWindowとは
スレッドが違う為にHookできないという風に理解したんですが、あってますか?
もしそうなら、LoginDesktopWindowやScreensaverDesktopWindowのハンドルを取得できればHook
出来そうな気がするんですが、方法は無いんでしょうか?
0399デフォルトの名無しさん
NGNGwcの情報はWindows側にコピーされているから大丈夫
0400デフォルトの名無しさん
NGNG現在マルチスレッドのプログラムを組んでいて、
メインループの一部で
EnterCriticalSection(&cs);
data.state = state;
LeaveCriticalSection(&cs);
スレッドのwhileループ内で
EnterCriticalSection(&cs);
State state = pData->state;
LeaveCriticalSection(&cs);
としているのですが、何故かメインループ内のstate(代入した方)の値の一部が異常になります。
上のどちらか一方をコメントアウトしてやると正常値を示すので
ここが原因ではないかと思うんですが、メインループのほうを
State s = state;
data.state = s;
のようにしても結果は同じでした。ほかの箇所が原因なんでしょうか?
もちろんpDataはdataへのポインタで、Stateは自作のクラスです。
プログラミング初心者でマルチスレッドは初めてなもので、
上のコードに問題があるのかどうか全く分かりません。
皆さんの考えをお聞かせください。
0401デフォルトの名無しさん
NGNGプログラムのミスだと思うのでよく確かめてください
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGよくわかんないけど、ダイアログベース単位とか使うのは?
0404400
NGNGさっきから確かめていますがまだ分からないです。
気長にチェックしてみることにします。
>>402
グローバル変数にして、WM_CREATEのところでInitializeしてます。
0405デフォルトの名無しさん
NGNGマルチスレッド対応のランタイムライブラリを使用していないとか
0406400
NGNGしてないかもしれません・・・。
どうやればいいんですか?
0407デフォルトの名無しさん
NGNGメニューの[プロジェクト]-[(プロジェクト名)プロパティ]からダイアログ表示して
[構成プロパティ]-[C++]-[コード生成]のページにランタイムライブラリの項目がある
0409デフォルトの名無しさん
NGNGvolatileをつけてみれたら?
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGスレッド内でCランタイム関数を使わない場合CreateThreadで動くはず
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG知恵が足りないときはデバッガで「なぜか変更される値」のアドレスにウォッチ仕掛けて、
いつ変更されるのか見てみれば?やり方はマニュアル読んで。
漏れも再現性高くてロジック追うの面倒なときはよくやるよ。
0415デフォルトの名無しさん
NGNG>EnterCriticalSection(&cs);
>data.state = state;
>LeaveCriticalSection(&cs);
このメイン側のstateはどこから来てるねん?
0416デフォルトの名無しさん
NGNG> 値の一部が異常になります。
> Stateは自作のクラスです。
具体的にはどんな型のデータがおかしくなるん?
ちゃんと代入演算子のオーバーロードしてないとかは?
0417デフォルトの名無しさん
NGNGしようとすると内蔵FDD以外でERROR_INVALID_FUNCTION
になるんですがそういうものなんですか?
0418デフォルトの名無しさん
NGNG・NTから存在するコマンドライン文字列の長さ制限は、
UNICODE_STRINGのLengthがUSHORTになっていることに由来するもので、
呼び出し側の工夫で回避することは不可能。
・引数(実行ファイル部を除く)部分のクォート処理は、
OS自体に仕様はなく、C言語スタートアップの実装に依存する。
以上のような理解で問題ないでしょうか?
0419394
NGNGレスをどうもありがとうございます。
質問の意味が分かりにくかったかもしれません。
複数の子ウィンドウの位置とサイズを動的に変更したい場合、
DeferWindowPos() 系が使えますが、汎用的なコーディングをしようとすると、
まず EnumChildWindows() 等で全ての子ウィンドウを列挙する必要があり、結構面倒です。
もしかすると対象がダイアログ上のコントロールの場合には
もっと楽な方法があるんじゃないのかな、と思ったものですから…。
0420デフォルトの名無しさん
NGNG> UNICODE_STRINGのLengthがUSHORTになっていることに由来するもので、
> 呼び出し側の工夫で回避することは不可能。
それはCreateProcessじゃなくて、BSTRの話。
M$製の多くの開発ツールは"@ファイル名"を実装することによって回避している。
> ・引数(実行ファイル部を除く)部分のクォート処理は、
> OS自体に仕様はなく、C言語スタートアップの実装に依存する。
御意。
0421デフォルトの名無しさん
NGNGCreateProcessって時点でOSはWindowsに限定だろ
OS自体に仕様はなくって発想には正誤とは無関係に問題があるぞ
link.exeのオプションあたり調べてみなって
0422デフォルトの名無しさん
NGNGBSTRとUNICODE_STRINGは別物だが…
Win32 APIのレベルではLPCSTRでもネイティブAPIまで降りてくると
UNICODE_STRINGで管理されてるから無理って話でしょ
0423デフォルトの名無しさん
NGNGいろいろやっても明朝っぽいんですけど
0424400
NGNGおかしくなる値はint型だったのですが、
その計算の過程でStateのメンバーのポインタ変数を
代入処理後も初期化無しで参照していました。
全然APIと関係なかったですが、おかげさまで解決しました。
いろいろアドバイスをくれた皆様、どうもありがとうございました。
0425デフォルトの名無しさん
NGNGダブルクリックに判定されたクリックの時に、
WM_DRAWITEMが送られないんだけどなんとかする方法ありますか?
0426デフォルトの名無しさん
NGNGどこかよいサイトをご存じないでしょうか?
Web上に無ければ、5K円位までなら書籍でもかまいません。
識者の方よろしくお願いします。
0427デフォルトの名無しさん
NGNGだからそんな事が出来たらスー(ry
マジレスするとLoginDesktopWindowやScreensaverDesktopWindowとは
デスクトップ自体が違うので、どうがんばっても取得できないんですよ。
0428デフォルトの名無しさん
NGNGこれじゃダメ?
ttp://www.cisnet.or.jp/home/tsuneoka/win32tech/6.html
0429デフォルトの名無しさん
NGNGじゃあ、WH_CBTのHCBT_CREATEWNDは?
これもできるか知らんけど。
0430みー
NGNG0431デフォルトの名無しさん
NGNGもういいから藻前はMSDNのWindowStationとDesktopの項を
100回読み終えるまで帰ってくるな
0432デフォルトの名無しさん
NGNGGetPrinter(), GetPrinterData(), OpenPrinter() あたりじゃないか?
0433デフォルトの名無しさん
NGNGどーこー出来る話ではないな。
0434みー
NGNG0435デフォルトの名無しさん
NGNGEnumJobs()かな?
電源はしらない
0436デルファイの名無しさん
NGNGPCに存在するCOMMポート、およびその名前の列挙方法を教えてください。
とあるCOMMポートをつないで操作するプログラムを組みたいんですが、
USB−COM変換ケーブルを使おうと思います。
そこで、その変換ケーブルの名称から、COMMポート番号を割出すことが
出来たらなあ、とおもっております。
よろしくおねがいします。
0437デフォルトの名無しさん
NGNG扱われるはず
デバイス名COM**でCreateFileして使えるか使えないか
調べるのは駄目ですか?
特殊なことをしない限りCOM1〜9を探せばOKだと思うし
0438デフォルトの名無しさん
NGNGCOMポートの列挙は>>437の言うとおり、
COMxを片っ端からCreateFileしていくか
レジストリの
「HKEY_LOCAL_MACHINE\Hardware\DeviceMap\SerialComm」
に格納されてる。
デバイスの名前はGetCommPropertiesで取得できる・・・と思う
0439デフォルトの名無しさん
NGNGいいページありますか?
0440デフォルトの名無しさん
NGNGここは、あなたのような煽る事しかできない優秀な方の来るところではありません
有益な情報を提供できる人の来るところです
0441デフォルトの名無しさん
NGNG言葉が足りなかったか?
元々の目的がタスクマネージャの起動阻止だったから、>>429の方法で
タスクマネージャのウィンドウを破棄すれば実現できないかと思ったんだが…
とりあえず、>>429の方法で全ウィンドウ破棄するよう組んで試したところ
起動阻止はできた。
だが、問題はタスクマネージャのウィンドウを特定することかもしれん。
クラスで判断しようにも共通ダイアログクラスだし、キャプションもフックの時点
では、まだ設定されていないみたいだし。
0442デルファイの名無しさん
NGNGありがとうございます。
それをキーにしてさがしてきます。
ではでは
0443397
NGNGありがとう。遅レススマンコ。
これで安心して、MyRegisterClassから抜けられます。
0444デフォルトの名無しさん
NGNGOpenProcess
EnumProcessModules
GetModuleFileNameEx
taskmgr.exeと文字列を比較
0445デフォルトの名無しさん
NGNGHWND hDlg
をいきなりゼロじゃないかを見てるんですけど、
確かにデバッグしてみると、宣言直後は必ずゼロ
になっています。
HWNDクラスって、コンストラクタで値を初期化してるのでしょうか?
0446デフォルトの名無しさん
NGNGstatic 変数や、外部変数でなくてか?
0448デフォルトの名無しさん
NGNGメモリ・イメージとしてゼロクリアされる
まがWindows環境ならNULLと考えても
おそらく差し支えはなかろうが
俺はそういうの嫌いだから
HWND hDlg = NULL;
と書くようにしてる
0449デフォルトの名無しさん
NGNGちがうよ。 =0 と同じになるんだよ。
0450デフォルトの名無しさん
NGNGどうもです。
納得できました。
あやふやのまま進めなかったもんで・・・
0451デフォルトの名無しさん
NGNG釣りか?
0452デフォルトの名無しさん
NGNG不要な初期化でもさぼらない心がけはよいが、
根拠がまちがっている。
ttp://www.catnet.ne.jp/kouno/c_faq/c1.html#30
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGサンプルはしりません('A`)
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGググれば山のように出てくる。
ttp://www.google.co.jp/search?num=30&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=Excel+vc&lr=lang_ja
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNG大人しくfopenつかっとれ
0464デフォルトの名無しさん
NGNGみなさん大人しくfopen使ってるんすかねー?
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG使ってる。ローカルファイルの一般的な展開にわざわざWin32APIを使うのは稀。
MFCのCFile系統も必要なし。
将来の別プラットホームや別プロジェクトへの移植も考えると、C標準でほぼ十分。
0467デフォルトの名無しさん
NGNG俺はテキストモード使わないな。必要なら自分で変換する。
勝手に変換されるのが気持ち悪いんでね。
0468デフォルトの名無しさん
NGNGもちろん。
エンドユーザレベルからアナログ回路まで
抽象度の高い順に選んで使う。
0469462
NGNG0470デフォルトの名無しさん
NGNGエクスプローラ→フォルダオプション→表示→詳細設定にある項目について
レジストリの該当部分を直接変更した後、現在開いているウィンドウに対しても即座に
変更を反映させたいと考えています。(すなわち[適用]ボタンを押すのと同じことをプログラム
で実現したいと考えています)
・SHChangeNotify(SHCNE_ALLEVENTS, 0, NULL, NULL); 引数色々変えても駄目
・SHGetSetSettings win9xで使えない。即座に反映しない。
・SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 駄目
・explorer.exe再起動 ウィンドウが閉じてしまう。不安定になる。
と色々試しましたがことごとく駄目でした。
どなたか同様のことを実現された方はいらっしゃらないでしょうか?
0471デフォルトの名無しさん
NGNGCランタイム関数のエラーコードはerrnoを見れ。
0472470
NGNGF5では即座に反映されないようです。
同様にIShellView Refreshも駄目のようです。
0473デフォルトの名無しさん
NGNG複数行で水平スクロールバーがあって端がへこんでいるような見かけですが、
エディットの中にちょうどフォントが10個ぶん縦に並ぶような高さは
どうすれば求められるのでしょうか?
edit_h = font_h * 10 + GetSystemMetrics(SM_CYEDGE) * 2
+ GetSystemMetrics(SM_CYHSCROLL)
このedit_hでCreateWindowEx()したのですが
なんだかおかしいようなのです
0474デフォルトの名無しさん
NGNG>・SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 駄目
Windows2000以降は、HWND_BROADCASTは使えないよ。
EnumWindows()などを使って個別にメッセージ送信してみたら?
解決する保証はしないけどね。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNGなんてことを聞く香具師はパケットを覗いても意味わからんと思う。
0477デフォルトの名無しさん
NGNGググってますけどそれらしきのでてこなかったです。
0478デフォルトの名無しさん
NGNGで検索しる
0479デフォルトの名無しさん
NGNGにたどり着きました!!ありがとうございます。
0480470
NGNGSendMessage(HWND, WM_SETTINGCHANGE, 0, 0);
自体に効果がないようです。
ユーティリティ系のソフト作成において結構需要のあることだと考えていましたが、
これだけ探して見つからないということはそうでもないようですね(泣)
0481デフォルトの名無しさん
NGNGウィンドウを取得したいのですが、何を使えばいいんでしょうか。
0482デフォルトの名無しさん
NGNGGetCursorPos()
WindowFromPoint()
ChildWindowFromPointEx()
0483481
NGNG0484328
NGNGwaveOutPause→waveOutReset→waveOutWriteという流れで関数を呼び出した時に
ノイズ(waveOutPauseで一時停止する寸前の音と思われる)が出る現象は
読み込んでいたドライバが悪いのではという方向に収束しています。
ちなみに自分の環境はWindows2000 ,K7S5A(Sis 7012)
とりあえず次のように変更してみました。
一時停止状態にするには、始めにボリュームを保存し無音状態に設定、Sleepで時間待ちをしたあとwaveOutPauseの呼び出しをする。
そのまま停止状態に移行するにはwaveOutResetのあとボリュームを元に戻し、
反対に一時停止を解除するにはボリュームを元に戻したあとwaveOutRestartを呼び出すと
自分の環境下でもノイズが発生することなく再生されました。
[一時停止]
DWORD Volume;
waveOutGetVolume(hWaveOut, &Volume); // ボリュームの保存
waveOutSetVolume(hWaveOut, 0x00000000); // ボリュームを無音に設定
Sleep(30); // 時間待ち
waveOutPause(hWaveOut); // 再生一時停止
[停止]
waveOutReset(hWaveOut); // PCMの再生停止
waveOutSetVolume(hWaveOut, Volume); // ボリュームの復帰
[一時停止解除]
waveOutSetVolume(hWaveOut, Volume); // デバイスのボリューム復帰
waveOutRestart(hWaveOut); // PCM一時停止の解除
0485デフォルトの名無しさん
NGNGexeやdllはLoadLibraryEx→EnumResourceNamesで列挙に成功したのですが、
iclだとLoadLibraryExのところで失敗します。
何か別な方法を使わないといけないのでしょうか?
0486デフォルトの名無しさん
NGNG0487485
NGNG0488デフォルトの名無しさん
NGNGLOAD_LIBRARY_AS_DATAFILEは指定してるの?
0489デフォルトの名無しさん
NGNG0490485
NGNG指定してますがダメみたいです。
こんな感じですよね?
hModule=LoadLibraryEx(lpFileName,NULL,LOAD_LIBRARY_AS_DATAFILE);
>>489
変更してみましたがダメでした。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNGそれだと一時停止のPause呼び出しの後に、ボリュームを戻した方が良いんでないの?
個人的にはデバイスボリュームをユーザーの指示以外で操作するのは、
他の音を鳴らすプログラムにも影響を与えるから、あまり好ましくないと思う。
0493デフォルトの名無しさん
NGNG音切れしない小さなブロックに別けて、コールバック毎にwaveOutWriteで小さく送ってる。
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGSetThreadPriority()でTHREAD_PRIORITY_TIME_CRITICALにすれば良いのか?
確かに自前ミキシングとか考えた場合なんかも、
できる限りバッファを小さくするべきなんだろうけど。
>494
ここか?
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
ちょっとググったらすぐ見つかったぞ。
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGせめて>>1に書いてあることくらいやれよ
0498デフォルトの名無しさん
NGNGSuper Thanks!!
0499デフォルトの名無しさん
NGNGそれとも.NETのライブラリが増えるだけ?
0500デフォルトの名無しさん
NGNGされない。WinFXに移行する。
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNGつーか、WindowsってあらゆるAPIをエミュって捉え方してるだろ
0503デフォルトの名無しさん
NGNG::SetWindowTextW(hedit, L"あいうえお\r\nかきくけこ\r\n");
UINT len;
char buf[512];
*reinterpret_cast<WORD*>(buf) = sizeof(buf);
len = ::SendMessageA(hEdit, EM_GETLINE, 0, reinterpret_cast<LPARAM>(buf));
buf[len] = '\0';
::MessageBoxA(hWnd, buf, NULL, MB_OK); // <---(1)
::MessageBoxW(hWnd, reinterpret_cast<LPCWSTR>(buf), NULL, MB_OK); // <---(2)
WCHAR wbuf[512];
*reinterpret_cast<WORD*>(wbuf) = sizeof(wbuf) / sizeof(wbuf[0]);
len = ::SendMessageW(hEdit, EM_GETLINE, 0, reinterpret_cast<LPARAM>(wbuf));
wbuf[len] = L'\0';
::MessageBoxW(hWnd, wbuf, NULL, MB_OK); // <---(3)
::MessageBoxA(hWnd, reinterpret_cast<LPCSTR>(wbuf), NULL, MB_OK); // <---(4)
W系で作成したエディットコントロールに対して、A系W系APIで最初の行の文字列を取得します。
(1)(3)は正常に表示され、(2)(4)は文字化けします。
SendMessageAではマルチバイト文字列、SendMessageWではUNICODE文字列が取得されるようですが
エディットコントロール側がそれらを判別してるのでしょうか?
それともSendMessageが文字列の変換をしているのでしょうか?
0504デフォルトの名無しさん
NGNGラッパーで実現してるとは言えるかもね。
世の中には、NTシステムコールを直に呼び出しているソフトとかあるのかな?
0505デフォルトの名無しさん
NGNGいつ互換性がなくなるか分からんからなあ・・・
よっぽどの必要がないかぎりやらんだろう
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNGEnumChildWindows()で列挙していったらどうか?
確認してないので責任は持たない。
0508デフォルトの名無しさん
NGNGSIGSTOP(プロセス一時停止)
SIGCONT(再開)
に相当するAPIってありますか?
自プロセスではなく他プロセスに対しての命令です。
0509デフォルトの名無しさん
NGNGプロセスの終了ならTerminateProcessでてきるけど一時停止は聞いたことないなぁ。
何故停止するのかよくわからんけど、Mutexとか使って排他制御とかじゃだめなん?
0510デフォルトの名無しさん
NGNGハンドルじゃなくてIDなら
EnumThreadWindows()とかGetWindowThreadProcessId()
とかあるけど、ダメ?
>508
シングルスレッドプロセスなら、
使ったこと無いけどSuspendThread()でどう?
0511デフォルトの名無しさん
NGNGSCM(NTサービス)から起動されたプロセスだと一時停止もあるけど。
0512デフォルトの名無しさん
NGNGそれはサービスとしての機能が停止しているだけで、
プロセスが停止しているわけではないと思うんだが...。
0513デフォルトの名無しさん
NGNGSIGSTOP(プロセス一時停止)
SIGCONT(再開)
に該当するのは、
SERVICE_CONTROL_PAUSE
SERVICE_CONTROL_CONTINUE
でわ?
停止シグナルをどうするかはプロセス側の処理でそ。
StopProcess()なんてAPIがあって勝手に止められても困ると思う。
0514513
NGNG0515デフォルトの名無しさん
NGNGだからSERVICE_CONTROL_PAUSEが通知されたからといって、
そのプロセスが停止されるわけじゃないんだってば。
>>508
/subsystem:consoleなヤツならGenerateConsoleCtrlEventが一番近い。
でも/subsystem:windowsやヤツには、それに相当するような一般的な仕組みはない。
0516デフォルトの名無しさん
NGNG止まるとは一言も書いてないんでつが。。
0517デフォルトの名無しさん
NGNGSIGSTOPを受けたら絶対にプロセスは一時停止しなければならないとでも
思ってるんじゃないの
0518SIGSTOP
NGNGなぜ・・・・止まらないぃぃっ!?
0519508
NGNG皆さんの与えてくれたキーワードで色々調べてみようと思います。
>>515
「でも/subsystem:windowsやヤツには、それに相当するような一般的な仕組みはない。 」
」
そうなんですか。
タスクスケジューラに「一定期間アイドル状態だったら実行」という項目があるので
(使ったことないけど)、その手のタスク制御APIがあるのかもと思ったのですが、残念。
0520508
NGNG読み間違えてました。
>>511
サービスから対象プロセスを起動して、自分の起動したプロセスを
制御せよ、ってことですね。ありがとう!
ってことはサービス以外から起動したものはやっぱ制御不能なのか。
0521508
NGNGと思ったらやっぱり
SERVICE_CONTROL_PAUSE はサービス自身のサスペンドだから違うのか。
0522デフォルトの名無しさん
NGNGRegisterServiceCtrlHandler()で指定したコールバックルーチンに
SERVICE_CONTROL_PAUSEが返って来るですよ。
一時停止は自分でしないといけないです。
0523デフォルトの名無しさん
NGNG漏れ(Win32)にそんなシグナル送っても止まるかーよ。 ア フ ォ 〜
0524デフォルトの名無しさん
NGNGTerminateProcess(>>523, 0)
あひゃひゃ。
0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG止まるというのは、自分が関数呼んだときだろ。
そんなにうまく止まるなら、リセットしなくても良いよな。
OS自体が固まるなんて起きないよ。ぷ。
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGWin32を何だと思ってるのだろう?
0529デフォルトの名無しさん
NGNG止まる場所、とか、止まる保証全く無いんだが。
WinはリアルタイムOSジャないよ。
0530デフォルトの名無しさん
NGNG止まらない場合ってどんなとき?
0531デフォルトの名無しさん
NGNGこのときの止まらないときは、フォアグラウンドのタスクが止まらないとき。
Winがフォアグラウンドでファイルを整理し始めると肝心のプログラムが録画
し始める以上にCPU喰いやがってフレーム落ちするんだよな。
しょうがネーから自分で最高のレベルで動くように改造したよ。ぷ
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGお前馬鹿か?
自分でOSを回避しないとリアルタイムできないだろう。変なの。
0534デフォルトの名無しさん
NGNGこれか? そりゃ、止まらんだろ。
REALTIME_PRIORITY_CLASS
このプロセスが、最も高い優先順位クラスを持つプロセスであることを示します。
このクラスを割り当てられたプロセスに所属するスレッドは、重要なタスクを実行する
オペレーティングシステムのプロセスを含むほかのすべてのプロセスのスレッドより
先に実行されます。少しでも長い時間実行すると、ディスクキャッシュがフラッシュ
されなくなったり、マウスが応答しなくなることがあります。
0535デフォルトの名無しさん
NGNGタスクマネジャーそのまんまだな。
お前、システムアイドルプロセスを止める方法知ってる?
そうするとCPUが少し早くなるよ。
0536デフォルトの名無しさん
NGNGTerminateProcess()すりゃええんでないの?
でも、そんなことをしたら色々不都合なことが起きそうだな。
0537デフォルトの名無しさん
NGNG悪かった。俺が全て悪かったよ。これで良いか?
もう、全て悪い使い方悪かったよ。済みません。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGダイアログ内でフォルダを開こうとするとアクセスバイオレーションエラーが
発生するんですがこれはどうにか出来ないものなのでしょうか?
環境はWinXP、VC++6.0SP5を使っています
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGEnumResourceNamesの第一引数にそのファイルのハンドルがいるのですが、
LoadLibraryEx(Filename, NULL, LOAD_LIBRARY_AS_DATAFILE | LOAD_WITH_ALTERED_SEARCH_PATH);
とこんな感じで取得しています。
ですが、よくある実行不可能なリソースだけのDLLだとLoadLibraryExが0を返します。
こういったDLLを同じように扱うことはできるでしょうか。
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGって どこにあるの? リンクを教えてみて。 ホントにDLLかどうか見てみたい。
0544デフォルトの名無しさん
NGNGそれでも読み込めないです…
eXeScopeだといけるんですが。
>>543
ttp://hp.vector.co.jp/authors/VA013969/
こちらのアイコン集です。
ちゃんと読み込めるアイコンビューアもありますし、上の通りeXeScopeでも読めます。
プログラムの無いDLLといった感じでしょうか…
0545デフォルトの名無しさん
NGNG0546541
NGNGそのDLLが16bitなのでLoadLibraryが失敗してるみたいです。
これは諦めるしかないんでしょうか…
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGLoadLibraryはLoadLibraryExのラッパーですが?
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG16bitのEXEを使ってLoadLibrary しても EnumResourceNamesが無いからねえ
自前でやった方が速いんじゃないの?
3C番地に PE ヘッダのオフセット があり
オフセット+0x24 が16bitのリソースへの位置(オフセット相対)
オフセット+0x34 が16bitのリソースの個数
0552デフォルトの名無しさん
NGNGオーナードローで描いてるんですが、列幅変えるとグリッドの線が残ってしまいします。
そこで全部書き直ししようとしてInvalidateRect(NULL)とUpdateWindow()したんですが全然症状が変わりません。
この方法じゃ駄目なんでしょうか?
0553デフォルトの名無しさん
NGNG自分の環境ではグリッド線が残ることはないが?
0554デフォルトの名無しさん
NGNGオーナードローなんだから、当然、全部自分で書き直さな。
で>425の答、知ってる人いないの?
0556デフォルトの名無しさん
NGNGif(wParam == IDC_LIST){
描画処理関数((LPDRAWITEMSTRUCT)lParam);
}
↑こんな感じってことだよね?
0557552
NGNGはいそんな感じです。
・・・と言いますか、>>425と同じ話のような気が。
列幅変更した時は、スクロールしない限りDrawItemに�dでこないぽいです。
全画面再描画イベント起こせればいいんですが・・・
0558デフォルトの名無しさん
NGNG猫とか丸ごとコピーしてサンプル作ってみたらどうですか?
0559デフォルトの名無しさん
NGNG質問したいことがあります。
「.xls」ファイル内のデータを取り出したいのですが、
.xlsファイルのフォーマットがわからない為、データ解析ができません。
Win32APIには、.xlsのファイル内データを取り出すための専用ライブラリーが存在するのでしょうか?
(.xlsファイルを.csvに変換するというやり方でもかまいません。)
0561デフォルトの名無しさん
NGNGODBCでも使えば?
0563552
NGNG列の最小幅を設定するためにHDN_ENDTRACKを引っかけて、
その中で幅を再設定していたのが問題だったようです。
そこで改めて質問です。
列幅の最小値を設定するのに上記以外の方法はありませんか?
0564デフォルトの名無しさん
NGNG問題なく再描画されるのでは?
0565デフォルトの名無しさん
NGNGできればソースがあるとうれしいのですが
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGスレ違いの気がしてこないか?
0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGGDI+でどうぞ
0570デフォルトの名無しさん
NGNG用意せずにCreateDIBSectionを呼びだして、後からSetDIBColorTable
でパレットを設定してるんですがこれって問題ないでしょうか。
変なところにアクセスしてないか心配なので...
0571デフォルトの名無しさん
NGNGボタンサイズから幅を得ようとすると、セパレータがある場合当然ズレがでるし。
0572552
NGNGふとMFCの方を見たらRedrawItems()と言うまんまな関数が用意されていたので、HDN_ENDTRACKフック内でこれ使って対処しました。
結果的にMFCアプリとして書き直しになりましたが、まあ問題が出ているよりはマシと。
どうもお世話様でした。
0573デフォルトの名無しさん
NGNGIPicture
0574573
NGNGサンプルはこれ↓
http://support.microsoft.com/default.aspx?scid=kb;ja;218972
0575デフォルトの名無しさん
NGNGあるマシンで選んだポイントサイズをファイルに保存し、そのポイントサイズを別のマシンのダイアログでデフォルト値とする必要があります。
CHOOSEFONT::iPointSize は出力用だし、
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
で計算しようにも HDC がありません。
どうすればよいのでしょうか?
0576デフォルトの名無しさん
NGNG猫でもわかるプログラミングを見ても、何を使えばできるのか分かりません。
WinAPIに表を作るクラスはあるのでしょうか?
0577デフォルトの名無しさん
NGNGこれのこと?
0578576
NGNGえ〜と、<table>タグみたいな表を見たのは、DLで手に入れた全く関係ないソフトです。
WinAPIでそのような事ができるのならば使おうと思ったんですが、
そもそも、そのソフトは自前で<table>タグっぽい表を自前で描画していただけかも知れません。
お騒がせしました。
0579デフォルトの名無しさん
NGNGよくわからんのだが、table(つまりHTMLをレンダリングして)使いたいのか?
それともtable要素のような表を使いたいのかどっちだ。
全くわけがわからん。
前者であればIEコンポ使えばいいし、後者なら>>577。
当然自前で描画する方法もある。
質問するときはわかるように説明してくれ。
0580デフォルトの名無しさん
NGNG0581576
NGNG説明が下手で申し訳ないです。
目的は、htmlで<table>タグを使った時のような、表を描画したいです。
以前、表を描画するクラスを作ったんですが、イマイチすっきりした設計ができなかったので、
既に用意された物があるのか聞きたかったです。
0582576
NGNG表のレイアウト(特にrowspanによるセルの連結)が自由にできるので、
<table>タグを使いたいと思いました。
IEコンポで検索したら、いろいろでてきたので、じっくり勉強しようと思います。
どうも、ありがとうございました。
0583デフォルトの名無しさん
NGNGthx.
とてもグッドです。
0584デフォルトの名無しさん
NGNG//リソースの内容
CONTROL "",IDC_LIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,25,174,120
MY_ICON ICON DISCARDABLE "my_icon.ico"
//イメージリスト作成後、リストビューに挿入
hList = GetDlgItem(hWnd, IDC_LIST);
hImage = ImageList_Create(16, 16, ILC_COLOR4, 1, 0);
ImageList_AddIcon(hImage, LoadIcon(gInst, "MY_ICON")); //gInstはNULLにしても駄目です
ListView_SetImageList(hList, hImage, LVSIL_SMALL);
//リストビューに項目挿入時
listitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
listitem.pszText = FileName;
listitem.iItem = i;
listitem.iSubItem = 0;
listitem.lParam = i;
listitem.iImage = 0;
ListView_InsertItem(hList, &listitem);
わかる方、いらっしゃったら教えてください。
0585デフォルトの名無しさん
NGNGそんなような議論があったかと思いますがそうなのですか?
昔見たコードでうろおぼえですが
case WM_TIMER:
KillTimer(XXX);
if()
{
KillTimer(XXX);
}
とかなんとかっていうコードを見たような。。
あやふやですみません。
0586デフォルトの名無しさん
NGNGまずはエラーチェックしてみたらどう?
LoadIconやImageList_AddIconが成功しているかどうかとかさ。
片っ端からエラーチェックすれば、どこで躓いてるか分かるでしょ。
0587デフォルトの名無しさん
NGNG▲ PostMessage(hWnd, WM_KEYDOWN, VK_RIGHT, 0);
アルファベットは送れています。
◎ PostMessage(hWnd, WM_KEYDOWN, 'Z', 0);
原因や対策など何か御存知の方いらっしゃいましたら、すみませんが教えてください。
0588584
NGNGif(ListView_SetImageList(hList, hImage, LVSIL_SMALL) == NULL
で引っかかっているようなので、その辺り調べてみます。どうもでした。
0589デフォルトの名無しさん
NGNGどうやれば出来るでしょうか?
0590デフォルトの名無しさん
NGNGCreateProcess()
0591587
NGNG>>590さんの速攻レスに追加。
CreateProcess() で得た PROCESS_INFORMATION を保存しておく。
起こした他アプリの窓が開いた後で EnumWindows() する。
OSが、こちらの関数 CALLBACK EnumWndProc() を呼んで来る。
呼ばれたら、引数で渡されたhWndから GetWindowThreadProcessId() でプロセスIDを得る。
保存しておいたPROCESS_INFORMATIONのプロセスIDと一致したら、それが起こした他アプリなのでhWndが判明する。
そのhWndを使って、他アプリにPostMessage()などを行う。
以上の手順となります。
しかしPostMessage()でVK_RIGHT[→]が送れなくて悩んでいるワタシ…
0592デフォルトの名無しさん
NGNG大昔組んだのだが忘れた。
PostMessageやSendMessageじゃなかったのは確か。
0593デフォルトの名無しさん
NGNGspy++がやっているような、ウインドウの強調表示をさせるには、
どうすればいいのでしょうか?
0594デフォルトの名無しさん
NGNGこれのことか?↓
keybd_event()
0595デフォルトの名無しさん
NGNG多分、FrameRgnを使ってごにょごにょとやってるんだと思ふ。
0597デフォルトの名無しさん
NGNGオブジェクト指向でない脳になってしまいました。
ちゃんとクラス使っててWin32 APIが学べるサイトはないですかね。
0598デフォルトの名無しさん
NGNG普通のウィンドウは PatBlt で四辺塗りつぶし。
リージョン使ってるウィンドウは仮想DC に FrameRgn してから BitBlt で転送描画。
自分が作ったときはこうやった。
0599デフォルトの名無しさん
NGNGMFCとかATLのサイトでも見とけ。
APIの解説をするサイトで、いちいち使えるクラスライブラリから作るのか?
0600デフォルトの名無しさん
NGNGウィンドウをC++のクラスでラップする方法なら↓ここが参考になるかも・・・
http://techtips.belution.com/ja/vc/0009/
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGMFCかVCL使いなよ。
OOPしたいのにWin32API使うなんて矛盾してる。
0603デフォルトの名無しさん
NGNG自作のアイコンをツールバーに表示しようと思っているのですが、
16色4bitの背景透明のBMPを作る手順がわかりません。
自分がやってる方法は
・Photoshop Elementsでアイコンの横並びの絵を描いて
・インデックスカラーで”ローカル”パレットで16色に減色
・bmp形式でWindows標準の4bitで保存
<実行結果>背景透明じゃないし、アイコンの絵がズレてる。
インデックスカラーで"システム"パレットで減色するとアイコン
の絵のズレはないんですが、8bitで背景も透けませんでした。
.rcファイルに
BM_TOOLBARBITMAP DISCARDABLE "ToolIcon.bmp"
TBBUTTONで構造体設定、CreateToolbarExでツールバーを生成してます。
いろいろ検索してみたんですが、フルカラーの画像から16色4bitの背景透明のBMP
に変換するまでの過程が説明されたものが見つかりませんでした。
ご教授ください宜しくお願いいたします。m(_ _)m
0604デフォルトの名無しさん
NGNG別に矛盾はしてない。
「作りたい」より「学びたい」であるならば代替案も要らないな。
でもまあ、OOPの基礎があればWIN32API乗っけるくらい屁でもねえだろ
脳内変換でがんばればいいじゃん、という話だな
猫のソースを自分でクラスにすりゃそれで実習までできる。
0605デフォルトの名無しさん
NGNGEdgeっつーツールが透過つきのアイコンファイルを
エクスポートしてくれるから試してみ。
0606デフォルトの名無しさん
NGNGD-Pixedもico出力フィルタ入れれば透過/複数サイズ色数格納できたりする
0608603
NGNG自分はBitMap形式が欲しかったのでちょっと違ったようです。
(※ただ、おかげさまで実行ファイル(exe)のアイコンは見事透過されるようになりました。)
「4bit16色のBitMap形式で背景透過する方法」を、もう一寸詳しいやり方を
ご教授くださいますでしょうか。
度々申し訳ございませんが宜しくお願いいたしますm(_ _)mm(_ _)m
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG別途α画像を用意する
パレットが化けてカラーキーじゃ抜けないってことでそ?
0611デフォルトの名無しさん
NGNGネイティブコードにはまだまだ到底かなわないとオモータよ。
0612デフォルトの名無しさん
NGNG0613605
NGNGすまん。最初の方だけ読んでicoだと思い込んでた。
ツールバーあんまり詳しくないんであれだが、背景透明というのは
ボタンの表面色に合わせるってことだろうか?
っていうことであればとりあえず↓なんかを参照。
http://yokohama.cool.ne.jp/chokuto/urawaza/toolbar1.html
0614デフォルトの名無しさん
NGNGBMPは画像形式として、透過をサポートしてないよ。
ツールバーについてはよく知らないが、何か「透過色」があるんじゃないのか?
「この色を設定してたら透けるようになる」みたいな。
0615デフォルトの名無しさん
NGNG亀レスですがありがとうございます
やってみます
0616デフォルトの名無しさん
NGNGツールバー作ったこと無いけど、
LoadImageでフラグをごにょごにょ指定して読み込めばいいんじゃないの?
0617デフォルトの名無しさん
NGNGMSが本気で.NETのライブラリをネイティブなものにするのなら、Longhornにおける
W32APIとの速度優位性は逆転するはず。ただ、そうするとWindowsを1/3ほど
再設計/再実装する必要が出てくるんで、エンバグは必至(いくら.NET Frameworkを
叩き台としてテストしているとはいえ)。なので、将来5年位はW32APIで行けると思ってる。
とスレ違いネタでした。
0618デフォルトの名無しさん
NGNG(Windows標準で付いてくるペイントブラシが自作できる位)
「猫でもわかるプログラミング」も大体、理解しました。
C++は、DOS等で練習問題程度はできるようになりました。
他にできる言語はVB、Perl位です。MFCはやってません。
この状態で次に勉強するのに最適な方向は何でしょうか?
MFC?ATL?WTL?VCL?GTK?.Net?
それとも>>597みたいに自作でクラスライブラリ作成??
0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG>この状態で次に勉強するのに最適な方向は何でしょうか?
マジレス:UNIX
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGなにがしたいの?何が作りたいの?
0623デフォルトの名無しさん
NGNGそれだけできれば食っていける
0624デフォルトの名無しさん
NGNG次はネタ振りできるようになってから書き込めよ
0625618
NGNGレスがいっぱい付いててビックリしました。
>>620
実はUNIXも興味はあるんです。やっぱり
ネットワーク系のプログラムだとUNIXの方が
勉強の環境としては良いんですかね?
>>621
実用的なアプリですか・・・。
作った事はあるのですが
ここで晒すと自分がバレてしまうので・・・。
>>622
「何が作りたい」というのは色々ありますが
作る上での環境が現在はC言語(Not C++)で、
WIN32 APIゴリ押しという感じがあるので
もうちょっと再利用性とかライブラリとか
使いやすい環境(言語,フレームワーク等)が
無いかなー、と思ってるところです。
>>632
ありがとうございます。実はコレで食っています。
でも、Windowsプログラムのみで食ってる訳では
無いです。本職はwebやflashやdirector等です。
それらで足りない部分をC等で補ってます。
>>624
すみません。でも、ネタでは無いんです。
ここのROMは3年くらいやってます。
0626デフォルトの名無しさん
NGNGいまさら先の短いVC+MFC覚えるのもしんどいしねぇ。王道ではあるけど。
.NETいくならC#だしWin32に残るならVB、Delphi、C++Builderあたりが無難でないの。
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNGLR_LOADTRANSPARENT でよいのでは。
0630デフォルトの名無しさん
NGNGdll内のグローバル変数を共有メモリにするため
#pragma data_segで、変数を確保しています。
そこで質問です。共有のために、data_seg内の変数は初期化が必須らしいのですが、
配列の場合はどうすれば良いのでしょうか。
今は例えば次のようにやっていますが、配列の長さを変えるたびに一苦労。
char name[20]={
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
};
何か良い方法がありましたら、ご教授下さい。
0631デフォルトの名無しさん
NGNG0632( ´,_ゝ`)
NGNGしかしながら、XPから32bitのBMPをアルファチャネル付きとして
扱えるのであった。
アルファチャネル付きのアイコンやツールバーはここが参考になる。
http://www.microsoft.com/japan/msdn/windows/windowsxp/winxpicons.asp#winxpicons_toolbar
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG亀レスすまそ
Win32 APIは立派にオブジェクト指向だぞ
第1引数がハンドルになってる関数いっぱいあったろ
概してOSとのやり取りはオブジェクト指向の権化のようなものだ
オブジェクト指向でない部分というとWinMainに長々と書きまくることだとか
ハンドルをポインタにキャストする場面だとかだ
決してclassという予約語を使うことがオブジェクト指向なわけではない
そこを間違えてる限りオブジェクト指向に関して進歩はないぞ
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGいい事言うね。貰いますよ(w
ハンドルオブジェクト削除関数 CloseHandle(HANDLE handle)
とか見てると、つくづくオブジェクト指向だなって思う。
どういう種類のハンドルなのか、実行時にしか判らないのにエライと思うよ、WIN32API。
そんなわけで、オブジェクト指向を無意味に拒絶するヤシは
スルーする方向でヨロ。
0639デフォルトの名無しさん
NGNGFILE *fp なんかメンバー変数とみなせるしな。丸見えだけど。
0640603
NGNGみなさんのアドバイスを見て、初心者なんで自分の実力以上に
大変で、どれも上手くいかなかったり試せてなかったりです(汗)。
そんで、ちょっとオープンソースのプログラムを参考にさせていただこうと思い、
以下のSotaさんのサイトのソース(ttPageやFFFTP等)を眺めたところ、
ttp://www2.biglobe.ne.jp/~sota/index.html
ソースにLR_LOADTRANSPARENTやバーの表面色に背景色を合わせるような処理が
見あたらないんで半分お手上げ状態です。
ツールバーのビットマップソースを見てみるとRGB(192.192.192)で
描かれていて「これが透過色かな?」とアイコンを作ってみたんですが、
インデックスカラー減色のシステム(Windows)カラーにRGB(192.192.192)の色が無く透過せず。
で、他の減色方法で試すと、透けました!けどボタンの枠と絵がズレちゃってる_| ̄|○
というわけで透過色と減色方法についてちょっと調べています。
詳しい方がいたら&Sotaさんの方法が判る方、ご教授くださいm(_ _)m
初歩的な事で申し訳御座いません。長文失礼いたしました。
0641デフォルトの名無しさん
NGNGソース晒せ
0642デフォルトの名無しさん
NGNG思うに >>636 や >>638 は
「抽象化」と「オブジェクト指向」がごっちゃになっているんではないかと。
0643デフォルトの名無しさん
NGNG詳しくないけども一応。CreateMappedBitmap とか調べてみそ。
RGB(192.192.192) は COLOR_BTNFACE に置き換えられるはず。
枠と絵がズレるはよくわかんない。
0644デフォルトの名無しさん
NGNG>そうなると fopen() なんかもオブジェクト指向になるが。。。
ある意味、正しいと思うよ。
0645643
NGNGなんか、別の関数の説明にあったような気がする。
ダメだ。忘れた。自力でがんばれ。
0646デフォルトの名無しさん
NGNGダブルクリックしたらNM_CLICKが来た後にNM_DBLCLKが来ちゃいます。
NM_CLICKが来た時点だとクリックかダブルクリックか分からないので
困るんですけど、どうしたらいいでしょうか??
0647デフォルトの名無しさん
NGNG俺もそう思う。
例えば手元の FreeBSD 4.7R + gcc 2.95.4 の stdio.h みて見ると...
typedef struct __sFILE {
unsigned char *_p; /* current position in (some) buffer */
int _r; /* read space left for getc() */
int _w; /* write space left for putc() */
(... 中略 ...)
/* operations */
void *_cookie; /* cookie passed to io functions */
int (*_close) __P((void *));
int (*_read) __P((void *, char *, int));
fpos_t (*_seek) __P((void *, fpos_t, int));
int (*_write) __P((void *, const char *, int));
(... 中略 ...)
} FILE;
となってて、C++ の仮想関数をポインタで実装している。
C で抽象化を実現する時の常套手段。
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNGttp://techtips.belution.com/ja/vc/0040/
0650デフォルトの名無しさん
NGNGダイアログじゃない、CreateWindowで作った窓の上にあるコントロールを
Tabで移動したいので、
親窓にWS_EX_CONTROLPARENT、コントロールにWS_TABSTOP
を指定してCreateしたのですが、
これだけでは全く反応してくれません。
他にどういった指定が必要なのでしょうか?
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG650じゃないけど、
タブで親子関係のコントロール間も移動させたいとなると、
IsDialogMessageに渡すだけじゃ無理っぽくない?
フレーム無しのダイアログ貼り付けた時とか、
プロパティとかのタブコントロール周りを真似る時とか。
昔うまくタブ移動できなかったよ。
メッセージちゃんと処理してなかっただけかもしれないけど。
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGサービスでWinInetは使用すべきでないようですし、
WinHTTPはWindows 2000以降でもサービスパック当てないと
使えないようですし、何か他の簡単な方法がありませんか?
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGできればもっと簡単なAPIがないものかと
0657デフォルトの名無しさん
NGNGAPIでもなんでもないが。
0658デフォルトの名無しさん
NGNGマジ?
ソースがあれば欲しい
0659650
NGNGサンクス、出来ました。
0660デフォルトの名無しさん
NGNG機能的には良さそうですが使うまでが簡単では
なさそうですねえ...(私の頭には)
>>658
Platform SDKのWinInetのトップページに書いてありました。
WinHTTPが出たから新しいほう使え、くらいのことかもしれない
と思ってましたが、今検索したら
http://support.microsoft.com/default.aspx?scid=kb;ja;238425
が引っかかりました。少し古いですけど。
0661デフォルトの名無しさん
NGNGおおさんくす
winhttpの存在を知らなかった・・・
ところでコレ、XP以降専用なんですかね。
0662デフォルトの名無しさん
NGNG新機能に絡んだ開発は嫌気がさす
0663デフォルトの名無しさん
NGNG俺は楽しいけど。てか、ずーと同じOSで仕事するってのは
考えただけでアクビが出そう。
0664デフォルトの名無しさん
NGNGWinHTTP 5.0はXPではおそらく標準で入っていて、
2000やNT4には追加コンポーネントだったみたいです。
WinHTTP 5.1はWindows 2003では標準、
Windows 2000 SP3やXP SP1でもインストールされるようです。
5.1が出たので、5.0の追加コンポーネントはもう配布していません。
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGタイプ一覧とプレースバーを消して使うといいよ。
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG>>665がやりたいようなことやってるぞ。
こんなアフォなことするくらいなら大人しくダイアログ作った方が早いけど。
0669デフォルトの名無しさん
NGNGそういう柔軟な発想ができるってことが大事なのかもね
0670デフォルトの名無しさん
NGNGココまで無理やり代用するのはすごい
0671デフォルトの名無しさん
NGNGLoadLibrary関数はディスク上のDLLファイルからの入力しかサポートしていないようですが、
同じようなことをメモリ上に展開したイメージから行いたいのです。
0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNG困った事にな。 それが禁止出来るならバッファオーバランなんて相当なレベルでまで防止出来るだろ。
0675デフォルトの名無しさん
NGNG仮想メモリ上のコード領域の自己書き換えが駄目なんだっけ?
0676671
NGNGメモリ上にはあくまでPEフォーマットなどのバイナリデータとして存在しているだけで、
関数やリソースのアドレスが正しくマッピングされているわけではありません。
DLLをファイルからロードしてメモリにマッピングするのと同様に、
メモリ上のデータからライブラリをロードして使いたいということです。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG今の32bit環境用に昔のCOMモデルのようなシンプルイメージを復活してもよさそうな気もする
0679デフォルトの名無しさん
NGNGXPのSP2からはスタックとヒープ領域のコードは実行不可になるみたいだよ。
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG「可能」か「不可能」かという問いに対しては、
藻前のスキルが糞なら「不可能」という答えになるし、
そこそこデキるヤツなら「可能」という答えになる。
藻前がそこそこデキるヤツと仮定して聞くが、
メモリにあるそのイメージは、ページ境界とセクション境界は
どちらも4KBでリンクされたヤツなんだろうな。
そうでなけりゃあ、無理。っつーか、面倒。アライメントやりなおせ。
次に、もしリロケートされてないんなら、PEの仕様書みて自分でまずリロケートしろ。
イメージがリロケートできたら、多分、GetProcAddressできんじゃねえかな?
っつーか、自前でリロケートできりゃあ、GetProcAddressなんざ使わなくたって
エクスポートテーブル読めるわけだが。
それができれば、自前でヘルパルーチン書いて遅延ロードでもして使え。
ただし、初期化ルーチンは明示的に呼び出してやらなきゃいけない。
それにいくつかのAPI(GetModuleHandleとかGetModuleFileNameとか)は、
正しい結果が得られない場合があるので、そのモジュールの
IATをフックして、つじつまを合わせてやらないといけない。
...なんせ、OSはそのイメージをDLLとしてロードした覚えがないからな。
.tlsセクションなんて切られてた日にゃあ、多分、あきらめたほうがいい。
もしここに書いたことがワケワカメなら、すまんが逝ってよし。
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNG今のところ対応してるのはK8ファミリだけだけどね。
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG>> 684
なあ、VC6 の atlbase.h の中で定義している
CWndProcThunk のロジックってこの仕様変更に引っかからないのかな?
思いっきり、構造体内部にコード書いてそこにジャンプさせてるんだが…
VC.NET の atlbase.h はこっそりと HeapAlloc に書き換えてるようだが。
0688デフォルトの名無しさん
NGNG0689684
NGNGATLはよくわからないけど、VirtualAllocかVirtualProtectでPAGE_EXECUTE系の属性を付けてなければ、その手のコードは全部引っかかります。
だから、HeapAllocでもひっかかります。
ただ、>>679の参照先によるとヒープ領域は"規定では実行不可"なのでオプションで実行可に変更可にできるんだと思う。
自動変数に確保だと、たぶんどうしようもないんじゃないかな。
0690デフォルトの名無しさん :
NGNG作成中なのですが、
メディアプレイヤーなどで再生している 画像、ムービー
の部分だけキャプチャできません(透けて表示されてしまいます)
うまくおこなう方法はありませんでしょうか?
著作権がからむのでキャプチャできないようなんらかのプロテクトが
かかっているのでしょうか?もしかしてこれが電子透かしという技術?
0691デフォルトの名無しさん
NGNGくすくす
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNGやっぱ、HeapAlloc でもダメですか。
ATL ってWindows に登録したWindowプロシージャからクラスの本当のWindowプロシージャ
を呼び出す間に HWND を this ポインタに差し替えるちょっとしたトリックを
上記の CWndProcThunk ってので実現してます。結構すっきりしていてオーバーヘッドも
少ないので、毎回クラスとウィンドウのマップを引いてる
MFC の実装より気に入ってたんだが。
ATL/WTL で書いたコードまとめてあぼーんですか…
いや ATL を使わない時でもウィンドウプロシージャとクラスを結びつける
便利で高速な方法として重宝してたんだけどね。
たった、10バイト強のトリックコードを
VirtualAlloc で確保すると言うのもなー
0694デフォルトの名無しさん :
NGNG勝手に”電子透かし”ってキーワードに結びつけてた・・ハズスィ。
■screen overlay
Windowsの表示に、ビデオ出力を重ねて表示させること。
ビデオ出力を表示させるウィンドウをマゼンタなどの特定の色にしておき、
その部分にビデオ信号をアナログ的に合成し表示させる方法。
ということは、ムービーの画像をビデオカードで合成してるから、
デバイスコンテキスト経由だとキャプチャは不可能ってことか。
なにか良い手はないかな?
0695デフォルトの名無しさん
NGNGこれか
0696デフォルトの名無しさん
NGNGVirtualProtectで実行属性を付けてやるのも駄目なの?
0697デフォルトの名無しさん
NGNGWTLスレで結論が出ている。
全く問題ない。
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNGどうしようもないってのは、すでにexeになってる物のことです。
>>698の言うようにコンパイルし直せば問題ないです。
0701デフォルトの名無しさん
NGNGCodeProjectにサンプルがあったような気がしたよ。ちゃんと見てないけど。
0702デフォルトの名無しさん
NGNGSP2対応と称して、ただリビルド。それだけで客から金が取れて (゚д゚)ウマー
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG省電力モードにするには
PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, TRUE);
とすれば良いのはわかったのですが
省電力モードから復帰したときを知るにはどうしたらいいのでしょうか?
検索して
復帰したときSC_MONITORPOWER のLPARAMの内容が-1のイベントがくる
と書いてあるサイトを見つけたのですが、そのようなイベントは実際には発生しないので
何か良い方法を知っている人いませんか?
0707デフォルトの名無しさん
NGNGうわ、
おれが納品したやつまるごと動かなくなるな(w
ヒープ上のコードの実行って、シェアウェアの
プロテクト用途とかでも極自然なことだと思うけど。
きついなこれ。
0708デフォルトの名無しさん
NGNG許可するにはどうしたらいいんですか?
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGGetWindowLong&GWL_WNDPROCでやると「アクセスが拒否されました」ってエラーがでちゃいます。
0711デフォルトの名無しさん
NGNGvbで使いたいのですが・・・
0712デフォルトの名無しさん
NGNGSetEnvironmentVariable
0713デフォルトの名無しさん
NGNGSetWindowsHookExでがんがれ
0714デフォルトの名無しさん
NGNGういう機能を持ったプロセッサだけじゃないの?
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG機器の指定までできるならいいけど
0717デフォルトの名無しさん
NGNG非常に面倒で参ってます。何か便利な方法や、フリーのリソースエディタで
タブ周りが洗練されているものなど、ございましたら紹介して頂けないでしょうか
今はタブ毎に別のダイアログとして作成 > 最後にテキストでリソースを開いて統合
という、泥臭い方法やっています
0718デフォルトの名無しさん
NGNG他人が読んでわかるように書け。
0719デフォルトの名無しさん
NGNG0720(ログ差分カキコ)
NGNG>>717
DelphiでTPageControl
720 名前: デフォルトの名無しさん [sage] 投稿日: 04/03/25 13:14
>>718
失礼。今までは例えば
タブAが押された>コモンコントロールのAを表示/Bを非表示に
タブBが押された>コモンコントロールのBを表示/Aを非表示に
としていたのですが、AとBが重なっていたりすると
リソース作りが非常に面倒で参っていたという話でした。
>>719
ありがとうございます。TPageControlについて調べていたら
どうやらタブが押された場合は、TPageControlの様に
ダイアログ毎交換してしまう方法が一般的なんですね。
Win32APIで、これをどうやって実現すればいいのか、もう少し調べてみます。
0721(ログ差分カキコ)
NGNGを自分でツール作ればいいんじゃないかな?
あるいは、DelphiのIDEでTPageControlで作った .DPRから変換作成したらどう?
0722(ログ差分)
NGNG0723(ログ差分)
NGNGそういや昔そんなツールがあったような
0724(ログ差分)
NGNG0725(ログ差分)
NGNGだれも指摘しないのか?
0726(ログ差分)
NGNG0727(ログ差分)
NGNGその逆で特定のプロセスの欲しい情報が格納されているメモリアドレスを調べる方法がありましたら教えてください。
0728(ログ差分)
NGNGDLL潜り込ませて検索させるか
ReadProcessMemoryで丸ごと読み込んで検索するしかない
0729727 (ログ差分)
NGNGとりあえずReadProcessMemoryで0〜検索する方法でやってみたいと思います
0730(ログ差分)
NGNGハンドルテーブルというところに格納されているってのはわかったんですけど
APIが見当たらないです。
0731(ログ差分)
NGNG0733(ログ差分)
NGNG0734(ログ差分)
NGNGツールはないでしょうか? 検索してもノイズ情報しか見つけられませんでした...とほほ
0735(ログ差分)
NGNG0736734 (ログ差分)
NGNGよからぬ事を考えて、それを実現するぐらいの能力があるなら、2ちゃんで質問してないかと...
漏れはWindowsプログラミングの勉強をはじめたばかりの初心者で、どんなサービスを使えば
いいのかよくわかってない。だから他のプログラムが使っているサービスを参考にして勉強を
すすめていこうと思ってるわけなのです。
0737732
NGNGIShellFolder::GetUIObjectOf(IID_IDropTarget) し、
これで取得した IDropTarget に対して IDropTarget::Drop() の間違いでした。
0738(ログ差分)
NGNG>>736
サービスってAPIのことのつもりだよな。
そのツールを使って
仮に使ってるAPIがずらずらっと出てきたとして、
仮にその引数や返却値までわかったとして、
藻前様はそれだけで使い方がわかるのですか。たいしたもんだ。
738 名前: デフォルトの名無しさん [sage] 投稿日: 04/03/26 11:27
そーゆーのはバイナリから判断するもんでもないだろ。
サンプルやソース公開してるフリーウェアのコード読んで勉強しろ。
0739デフォルトの名無しさん
NGNG一番手前であるかどうか知るのはどうしたらいいんでしょうか?
GetActiveWindow APIで判断できるかと思ったんですが、
これで取得できるのは自分のプログラム内のアクティブウィンドウ
だけでした。よろしくお願いします。
0740デフォルトの名無しさん
NGNG逆汗ツールでapiのインポートテーブルを書き出す物もあるよ。
0741デフォルトの名無しさん
NGNGGetForegroundWindow()
0742デフォルトの名無しさん
NGNGttp://www.windows-spy.com/
別のツールだがこれも使えそう。
フリーのSpy++みたいなもの。
0743(ログ差分)
NGNGこのソフトと同じようなことをやりたいけど、どうやっていいのかわからない。
MSDNもあるけど、検索しようにもキーワードが浮かばない。
使ってるAPIでもわかれば、それを手がかりにMSDNを読み始められるのに。
ってことでしょ。気持ちはわかるよ。
740 名前: デフォルトの名無しさん [sage] 投稿日: 04/03/26 11:38
Dependency Walker
0745デフォルトの名無しさん
NGNG飛んだログの補完だろ
0746デフォルトの名無しさん
NGNGこれ、めちゃくちゃ重いんだけど、どうにかならないもんなんだろうか?
0748デフォルトの名無しさん
NGNGどうしたらいいんでしょうか?
WM_CREATE内でShowWindow(SW_HIDE)しても、WM_MDIACTIVATEが呼ばれて
アクティブになってしまうんですが。
0749デフォルトの名無しさん
NGNGというのでは駄目かな
0750デフォルトの名無しさん
NGNGシステムが各種コントロールで使用しているパーツのイメージ
(チェックボックスやラジオボタン等のビットマップ)を
利用する方法があれば教えてください。
少々複雑なカスタムコントロールを作成しようとしているのですが、
自前でビットマップを用意するより、システムのものが流用可能であれば
そっちを利用した方がいいと思いまして。
0751750
NGNG0752sage
NGNGWM_MDIACTIVATEはactivateされるウィンドウとdeactivateされるウィンドウの
二つに来るので、両方からそのフラグをチェックしなくちゃいけなくって
ちょっとめんどいなぁと思ったんですよね。
そもそもWM_MDIACTIVATEを発生させないような作成方法はないものかと。
0753デフォルトの名無しさん
NGNGクラシックスタイルならば、DrawFrameControl() で描ける。
ただし、背景を透過させるのに多少の工夫が必要。
XPスタイルならば、テーマ系のAPIを使えば良いんじゃないかな。
0755デフォルトの名無しさん
NGNGどもありがとうございます、ちょっと難しそうですがやってみます。
ドロップターゲットってIShellFolderから取得できるんですね。
0756730
NGNG鯖が死んでる間に自分でも調べてみたんですが、どうもよくわかりません。
NtQueryInformationProcessでPEBを取ってくればいいのかとも思ったんですが、
PEBにはハンドルテーブルに関する情報がないようです。
どなたかご存知の方がいたらご教示ください。
0757デフォルトの名無しさん
NGNG実行保護機能を切らないとDivXの再生ができないらしい。
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNGConfiguration Utilityを使うと↓
ttp://www.border.jp/uploader/img/2253.jpg
0760デフォルトの名無しさん
NGNGDivXもデコード出来た気が。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGエディット ボックスなどに出力する方法がわかりません。
検索してもそれらしいものが見つからなくて…。
開発環境の [出力] ウィンドウみたいなことをしたいのです。
どなたかご存知でしたらお教え願います。
0763デフォルトの名無しさん
NGNG0764762
NGNG「パイプ」をキーワードに追加して検索したらなんとなく
それらしいのが見つかったので、いろいろ試してみます。
0765デフォルトの名無しさん
NGNGプロセスによって取得できるものと出来ないものがあるのですが
どのような原因があるのかわかる方いましたらおねがいします。
0766デフォルトの名無しさん
NGNGこれってエクスプローラのコピー等の動作を
フックできるものだと思ってたのですが、
登録してもそんな動作はしてくれません。
これの用途って本当は何なのでしょうか。
あるいは私のコードがおかしいかも知れませんが
ご存知の方いらっしゃったらご教示願います。
0767デフォルトの名無しさん
NGNGその書き方だと、どういう動作を期待していて(フックって実際に何をしたいの?)、
結局どういう動作になったのかもわからんぞ。
SDK Reference を見たところでは、コピー等の動作の許可、不許可を出すだけみたいだが。
とりあえず、レジストリの正しいところに登録してる?
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/icopyhook/CopyCallback.asp
0768デフォルトの名無しさん
NGNGおいおいDelphiのTLanguagesが>>679に引っかかるらしいぞ
0769デフォルトの名無しさん
NGNGウィンドウ作って、そこにコントロール(とくにチェックボックス)くっつけると、
ウィンドウの背景色は白なのに、コントロールが表示されている座標の四角形の中の背景色は中途半端な灰色とかになりますよね?
見栄えが悪いのでどうにかしたいのですが、みなさんはどうやって解決してますか?
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGWM_CTLCOLORBTNに応答してブラシを返してやるとか
0772デフォルトの名無しさん
NGNGサブクラス化でもいいかもね。
0773デフォルトの名無しさん
NGNG追加したいんですけど、一番COOLな方法はなんでしょうか?
0774769
NGNGコントロールごとに背景色を変更せずにすみました。
もともとウィンドウの背景自体が白だったのでこうしたほうが早いかと、
hbrBackground = (HBRUSH)GetSysColorBrush(COLOR_MENU)
これもみなさんの助言のおかげです
アリガト(´▽`)サン!
0775766
NGNGレスどうも。
何がしたいかと言うよりも、まずどんな動きをするのかが知りたいです
Callbackは引数をファイルに書き込んでIDYESを返すだけにしています
書き込んでいるレジストリは、
HKEY_CLASSES_ROOT\CLSID\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\
以下に CLSID、InprocServer32\ThreadingModel="Apartment"、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Shell Extensions\Approved\xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
と、
HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers\myCopyHook\
(既定)={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
HKEY_CLASSES_ROOT\Printers\shellex\CopyHookHandlers\myCopyHook\
(既定)={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
これでだめだったのでさらに、
HKEY_CLASSES_ROOT\*\shellex\CopyHookHandlers\myCopyHook\
(既定)={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
HKEY_CLASSES_ROOT\Folders\shellex\CopyHookHandlers\myCopyHook\
(既定)={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
に書き込みましたが、やはりだめでした・・・
そもそもClassFactoryが呼ばれていないので
根本的に間違えている気もしますが、何が悪いか解りません
0776デフォルトの名無しさん
NGNG当然、InprocServer32 の(既定)にDLL名は書いてるよね?
サンプルのShellExtを見てみたらどうかな。
0777デフォルトの名無しさん
NGNGTerminateProcess()
GetExitCodeProcess()
0778デフォルトの名無しさん
NGNG#include <windows.h>
DEFINE_GUID(name, xxxxx);
というヘッダ(aaa.h)を配布する場合、使う側はソースファイルの一つで
#define INITGUID
#include "aaa.h"
と書いてGUIDの実体を作りますよね?
この場合aaa.h内のwindows.hもINITGUIDの影響を受けてしまい
windows.h内にDEFINE_GUIDがあると、それも実体が作られてしまうのではないでしょうか?
一体どうすればいいのでしょうか?
0779デフォルトの名無しさん
NGNGふつうにexternでいいんじゃないの?
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG0782778
NGNGヘッダとDLLを提供するだけなので、利用者側でGUIDを定義してもらわないといけないのです。
__declspec( selectany )や__declspec( uuid(“”) )が使えればいいのですが
これってMS固有ですよね・・・
0783デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/jpdllpro/html/Toppage_16BitThunk.asp
http://support.microsoft.com/?scid=kb;ja;104009
0784デフォルトの名無しさん
NGNGDLLがロードされたときスレッドを起動し、アンロードされたとき停止するようにしたいため、
以下のようなコードを書いたのですが、
WaitForSingleObjectのところで永久に待ち状態になってしまいます。
何がいけないのでしょうか。
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
if (fdwReason == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hinstDLL);
run = true;
hThread = CreateThread(0, 0, Thread, 0, 0, 0);
}
else if (fdwReason == DLL_PROCESS_DETACH) {
run = false;
WaitForSingleObject(hThread, INFINITE); // ← ここでロックしてしまう。
CloseHandle(hThread);
}
return TRUE;
}
DWORD Thread() {
for ( ; ; ) {
if (!run) {
return ERROR_SUCCESS;
}
Sleep(1000);
}
return ERROR_SUCCESS;
}
0785デフォルトの名無しさん
NGNGスレッドが終了していないからです
0786デフォルトの名無しさん
NGNGとりあえずrunにアクセスする際にクリティカルセクションで同期を取りなさい
0787デフォルトの名無しさん
NGNG>>785
if (!run) が成立してリターンはしてるのですが、WaitForSingleObjectでロックしてしまいます。
>>786
端折って書きましたが、実際のコードでは同期をとっております。
0788デフォルトの名無しさん
NGNG戻り値はGetExitCodeThreadで取得
とかしてみたら...
もっと根本的な同期処理の問題か
0789デフォルトの名無しさん
NGNGDWORD Thread() は WINAPI でなくてもいいのか?
0790デフォルトの名無しさん
NGNGDWORD Thread(LPVOID) にしなくていいの?
0791デフォルトの名無しさん
NGNG引数が0または1個では問題ないかと
0792デフォルトの名無しさん
NGNG私は「プロセスが1個なんだから、DLLも1つしかアタッチされてないだろう」と思っていたのですが、
実際 >>784 のコードで何が起こっているかというと、メインとスレッドが、各自、DLLをアタッチしているわけです。
そして、if (!run) が成立してスレッドがリターンすると、
スレッドはDLLMainを呼び出して自分自身にアタッチされていたDLLをデタッチしようとするわけですが、
目下メインがスレッドをデタッチ中なので、「DLLMainのシリアル実行」の仕組みにより、
スレッドはDLLMainを呼べません。したがって、>>785 の兄貴の言うとおり、そもそもスレッドが終了できないわけです。
0793792=784
NGNG0794デフォルトの名無しさん
NGNGThreadProc の方でリターン前に done = true; 等して、
DLLMain では sleep しつつ done を待つ、とかにするのがよいと思います。
ここでカッコ良くフラグじゃなくてイベントを使おうとすると、またハマリます。
(漏れだけかもしれないけど)
0795792=784
NGNGありがとうございます。
私の場合、今回は結局、DLLMainで自動的にスレッドを停止しようとするのはやめ、
DllFinalizeというのを作り、これを明示的に呼んでください、というふうにしました。
0796デフォルトの名無しさん
NGNGご存知の方がらっしゃいましたら、どうかよろしくお願いします。
0797デフォルトの名無しさん
NGNGなんかstatic変数が共有されてくれないみたいなんですが。
0798792
NGNGたまたま最近似たようなことをやりました。
EnumThreadWindowsでウィンドウを列挙して、自分以外のウィンドウをディセーブルすれば良いかと。
HWND hMyWnd;
std::list<WndStatus> WndStatusList;
// ウィンドウを列挙
void Disable()
{
EnumThreadWindows(GetWindowThreadProcessId(hMyWnd, 0), EnumThreadWndProc, 0);
}
// ウィンドウ列挙コールバックの中で自分以外のウィンドウをディセーブル
BOOL CALLBACK EnumThreadWndProc(HWND hWnd, LPARAM lParam)
{
if (hWnd != hMyWnd)
{
// 自分以外のウィンドウの状態を保存
WndStatus x;
x.hWnd = hWnd;
x.bEnable = IsWindowEnabled(hWnd);
WndStatusList.push_back(x); // 元に戻すときはこの内容をリストアする
// ディセーブル
EnableWindow(hWnd, FALSE);
}
return TRUE;
}
0799デフォルトの名無しさん
NGNGありがとうございます。
大概の場合には望みの動作させることができました。
ただ WM_PAINT の処理中に呼び出された場合、
ダイアログが複数起動してしまうことがありました。
このコードをベースに、もう少し考えてみたいと思います。
ありがとうございました。
0800デフォルトの名無しさん
NGNGテストしたいのですが、利用できそうなAPIはあるでしょうか?
(豆腐になるならその文字コードだけ動的に別のフォントに切り替えて表示したい)
0801デフォルトの名無しさん
NGNGこれで表示できるような情報とりたいってか?
少なくともTrueTypeのフォーマットには情報含まれてるらしいが。
FontLinkとかもあるしな。
0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNGこんな感じでやってみたのですが、どうにも上手く行きません
TVITEM tvi;
tvi.mask = TVIF_STATE;
tvi.hItem = hTarget; //変えたい項目のハンドル
tvi.state = TVIS_SELECTED;
SendMessage( handleTreeView, TVM_SETITEM, (WPARAM)0 , (LPARAM)&tvi );
SetCurselがあればいいのに_| ̄|○
0805デフォルトの名無しさん
NGNGCreateFileMapping
0806デフォルトの名無しさん
NGNGそれでは他のプロセスとも一緒になってしまうではないか。
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGDLLの中のstatic変数は、1プロセス内ならば共有されるはず。
プロセスをまたがってるんじゃないか?
もしくは、DLLがリンクしているstaticライブラリ内に変数がある場合はだめ。
それぞれのDLLごとにコピーされるから。
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNGTreeView_SelectItem でどうですか。
0811797
NGNG>もしくは、DLLがリンクしているstaticライブラリ内に変数がある場合はだめ。
やっぱりそうですか。そうですよね。考えてみれば当然ですね。^^ゞ
では、質問の仕方を変えます。
「OS全体で一つ」のメモリを作るにはCreateFileMappingが使えますが、
「そのプロセスで唯一」のものを作る、何かよい方法はないでしょうか。
皆様宜しくお願いします。
0812デフォルトの名無しさん
NGNGプロセスIDを元に生成した文字列で名前つきの共有メモリを作れば、
プロセスごとに唯一の共有メモリにできる。
>>811
処理系に依存する方法だが、VC++の場合、たとえば
extern __declspec(dllimport) int foobar;
と書いたヘッダをインポートすれば、
foobarへの参照はインポートアドレステーブル経由で間接的に行われるように
コンパイルされる。
逆にエクスポートする側では
__declspec(dllexport) int foobar;
と書いておけば、foobarのアドレスがエクスポートテーブルと
インポートライブラリに出力される。
または定義ファイルを書いてエクスポートさせることもできる。
0813デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNGそもそも static はスコープ(宣言されたコンパイル単位の中でのみ「名前による
アクセス」が可能で、翻訳単位を超えたアクセスはできない)を宣言してるという
だけで、メモリ空間がどうのこうのというのとはちょっと違うのではないでしょうか?
0816デフォルトの名無しさん
NGNGおちつけ。そんな意味でstaticと言ってるわけじゃないことに気付け。
0817デフォルトの名無しさん
NGNG片方の DLL に生成・破棄の実装をまとめてしまえばいいんじゃないの?
0818デフォルトの名無しさん
NGNG複数のdllから参照される変数が必要な設計になるようなら、
dllの構成自体を少し見なおしたほうがいいと思います。
0819デフォルトの名無しさん
NGNGGetFontUnicodeRangesはビットが立っているUnicodeRangeに
すべてのグリフが実装されていることを保証するわけではない
たとえばCJK統合漢字のビットが立っていても20902字すべて
実装してるとは限らない
0820798
NGNG>>799
> ただ WM_PAINT の処理中に呼び出された場合、
> ダイアログが複数起動してしまうことがありました。
と同じ問題で困っており、回避する方法があれば知りたいです。
すなわち、モーダルダイアログのボタンが押されるまで処理を止めたいが、
そのダイアログのメッセージループから他のウィンドウのメッセージループに処理が移ってしまい、
そこで同じ処理が呼ばれるとダイアログがもう一つ出てしまうことがありますが、
どのような対策が有効でしょうか?
ダイアログは別のスレッドで出し、メインの処理は止めてしまう方法を試しましたが、
それだと他のウィンドウの更新が完全に止まってしまって格好悪いし、良い方法はないでしょうか。
(他のプログラムから呼ばれるDLLを作っているので、他のウィンドウの処理を変更することは不可です)
0821デフォルトの名無しさん
NGNGcase WM_PAINT:
{
static bool flag = true;
if( flag )
{
flag = false;
モーダルダイアログ呼び出し
flag = true;
}
}
0822デフォルトの名無しさん
NGNGウィンドウハンドルを取得したいのですが、
どうやればいいのでしょうか?
0823デフォルトの名無しさん
NGNGすみません、解決しました。
0824デフォルトの名無しさん
NGNGせめてどのウィンドウメッセージのどのパラメータかぐらい書けよ。
0825デフォルトの名無しさん
NGNG訊くだけ訊いてフィードバックせずに去るの(・A・)イクナイ
0826デフォルトの名無しさん
NGNGすみません。
このサンプルで解決しました。
http://hp.vector.co.jp/authors/VA016117/lastactive.html
0827デフォルトの名無しさん
NGNGちょいと試してみたんだが、WM_ACTIVATEAPP と EnumThreadWindows() で
いけそうな気がするものの、スレッド ID が 0 で返ってくる場合が多くてうまくいかない。
なので、フック(SetWindowsHookEx()) しかないかなーと思ったら
ttp://hp.vector.co.jp/authors/VA016117/lastactive.html
にそういうコードがあった。
これは WH_CALLWNDPROC を使っているようだが、WH_CBT に HCBT_ACTIVATE ってのが
あるんでこっちでもいけそうな気がしないでもない。
…と、一筋縄じゃいかない感じなんで本当に解決したんなら教えて欲しい。
0828デフォルトの名無しさん
NGNGやっぱフックだったのね。
0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNGどうしたらいいのでしょうか。
0831デフォルトの名無しさん
NGNGプロシージャ内でならWM_COPYDATAが受け取れるのですが
↓の通りにするとなぜかWM_COPYDATAが受け取れないです。
GetMessage(&msg,hwnd,0,0);
if(msg.message == WM_COPYDATA)
{
MessageBox(NULL,"何か来た","テスト",MB_OK);
}
DispatchMessage(&msg);
諸々の事情でC#でWM_COPYDATAメッセージを受け取る必要があるので
この方法でやろうと思ったんですが、上記の通りうまく行きません。
よろしくお願いします。
0832デフォルトの名無しさん
NGNGウィンドウIDって何?(・∀・)ニヤニヤ
ウィンドウハンドル(HWND)は全プロセスで共通値になるはずだよ。
HWNDは、いわゆるハンドル(HANDLE)と違い、アクセス制限がないので
サービスをデスクトップと対話させたらマズイって事だね。
0833デフォルトの名無しさん
NGNGC#ならWndProcメソッドをオーバーライドすれば?
0834830
NGNGえっとCreateWindow()で子ウィンドウとして作ったボタンとかエディットコントロールの
ハンドルを、CreateWindow()の9番目の引数をもとに取得したいということです。
ウィンドウハンドルから、そのウィンドウのIDを取得するのは
GetWindowLong(hWnd, GWL_ID)
でできますよね。その逆をやりたいんです。
HWND hWnd = GetWindowHandleFromID(ID);
みたいに。
0835デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNGアトミックに行う方法があれば教えてください。下のコードだと
コメントのようなことが起こりえてしまうと思うんですよ。
//ファイルが作られtmpnameに名前が入る
GetTempFileName(dir, prefix, 0, tmpname);
/* ここで、万が一、他のやつがtmpnameを開いて書き込んでしまったら? */
handle = CreateFile(tmpname, ....); //排他的に開く
0838デフォルトの名無しさん
NGNGどうしてもいやなら、自分で一時ファイル名生成を実装すればいいだけだと思う。
0839デフォルトの名無しさん
NGNGども。どっちにしても無限ループすることが論理的には可能な気がするのが
イヤだけど仕方ないですかね。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGとりあえず、ReactOSのCreateProcessあたりのソースでも読んでみれば?
0842デフォルトの名無しさん
NGNGどういうことですか?
0843デフォルトの名無しさん
NGNG可能だろうけどすごい確率だよ。
原発とか医療ソフトとかで無いのなら、「失敗しますた」で処理停止すればいいんでない?
ここで気にするべきなのは、失敗したまま処理が続行されないことだと思う。
ほとんど起こりえないことに神経質になってっと、禿げるのが早まるぞ〜。
0844デフォルトの名無しさん
NGNG最悪臭いがCREATE_NEWで失敗したら別の名前でやりなおすのが簡単
0845デフォルトの名無しさん
NGNGそりゃ一時ファイルを作成しようとしたときにそのファイル名がバッティングしている可能性は 0 じゃ無い。
だから、リトライしてもそのたびにぶつかる可能性も (急激に 0 に近づいていくが) 0 にはならないよ。
どうしてもそう言うのがいやなら、自分で独自のルーチン作るしかないでしょ ?
0846デフォルトの名無しさん
NGNGリトライで実用上全く問題ないとおもっているので無理なら無理
でいいんです。
で、わからないのは>>838でも独自で実装すれば…って書いて
あるんですが、実装が「適当に名前を生成し、それがディスク上
にすでに存在していたら他の名前を試す」しか思いつかないの
です。(GetTempFileNameの実装もこれだと思っている。)
つまり、自分で作るにしても有限時間で終わると保証できる
方法ってないんじゃないですか?ということです。
0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNGUniqueなファイル名を如何に作るかが問題なのではないことに気付こうよ。
0850デフォルトの名無しさん
NGNGしかし>>847の発想もいいと思う。
Windowsにファイル名を作らせるのではなく、乱数を用いたファイル名を自分で作って
テンポラリフォルダにファイルを作成するという方向性は、重複を避けるのに良いのでは
ないだろうか。
乱数の重複が〜なんてホザくなら、C3でも使ってCPU内の電磁ノイズで乱数初期化でもしろ。
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG当然完全な方法は存在しないよ。
普通は、そのプログラム独自のディレクトリ用意してその中で一意のファイル名を生成するようにすれば十分だと思うけど、>>848 みたいに悪意のプログラムを考えたらどうしようもない。
>>849
ん ? 何が言いたい ? 説明求む。
>>850
プロセス番号はその時点でシステム内でユニークであることが保証されているから Unix のシェルプログラムなんかだと普通に使われてるよ。
そういう意味で乱数よりいいと思う。
ただ >>848 みたいな悪意あるプログラムからは、狙われやすいけど。
>>851
確かに。
でも、突かれてもリトライすればいいだけだろ。
16連射以上でリトライすれば、大丈夫だと思う。
0853デフォルトの名無しさん
NGNGでもファイルシステムの欠陥のためにそういうことができないとか、
そういう場合はほとんど起きないレベルまでガードしていって、
その上でもしエラーが起きたらそれ以上進めないようにするので良いのではないか?
0854デフォルトの名無しさん
NGNGその方法で有限時間で終わると思うけど。
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNGリトライ回数が有限であれば必ず終了するよ。
0857デフォルトの名無しさん
NGNG証明してみてくれ。
0858デフォルトの名無しさん
NGNG最大値はファイル名でも何かのIDでもOSがファイルを区別できる表現の数。
0859デフォルトの名無しさん
NGNGgoogleにきけ
0860855
NGNG0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGん ?
>>846 が求めてるのは、一時ファイルを有限時間内に作成する方法だろ ?
で、一時ファイル作成するにはファイル名が必要だから、ユニークなファイル名を作る方法についてあーだこーだ言ってるだけだが、それが何か ?
0865デフォルトの名無しさん
NGNGユニークなファイルが作られるところまではAPIでできているだろ?
0866デフォルトの名無しさん
NGNG0867865
NGNG私ゃファイルが作られた後、
自分が利用する前にopenされることを懸念していると読んだんだけど、
それ以前の問題だったんだ?
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNGREALTIME_PRIORITY_CLASSだと最強になるらしい。
0870デフォルトの名無しさん
NGNG割り込みハンドラからファイル作ったりできるのかな?
Windowsのことはよくわかんねぇや。
スレ汚しすまんね。
0871デフォルトの名無しさん
NGNG真のREALTIMEは多分ユーザーモードにはくれないし。
0872デフォルトの名無しさん
NGNGなファイル名を持つファイルで埋め尽くしたディレクトリで
GetTempFileName(".", "tmp", 0, tmpname)
ってしたら3分ぐらいディスクガリガリしてからおめおめと失敗返してきた。
winxp
0873デフォルトの名無しさん
NGNGワロタ
0874デフォルトの名無しさん
NGNGログオンユーザの環境変数とシステムの環境変数を
分けて一覧が欲しいのですが、どのAPIを使えばいいのでしょうか?
ログオンユーザの権限、所属するグループも読み込みたいのですが、
これはどのAPIを使えばいいのでしょうか?
調べたけど getenvとかGetEnvironmentVariableくらいしか
見つかりませんでした・・・_| ̄|○
0875デフォルトの名無しさん
NGNGありがとうございます。
非常に助かりました!
0876いなむらきよし
NGNG0877デフォルトの名無しさん
NGNGこれって人力なんだよね。少し感心した。
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNG>>874
RegQueryValueEx
SYSTEMかんきょーへんすー
HKEY_LOCAL_MACHINE
System\\CurrentControlSet\\Control\\Session Manager\\Environment
USERかんきょーへんすー
HKEY_CURRENT_USER
Environment
0882デフォルトの名無しさん
NGNGなんだか、さいころを振る時にさいころが立つ心配をして怖くてふれないみたいな話だな。
排他的に開くにせよ、ユニークな名前の生成にせよそんなもん思いっきりへんてこな名前
にすれば、 悪意が存在しなければ、億年単位で安心して寝られるだろ。
それとも、論理的に証明できなければ絶対だめなのか?
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNGあえてこだわってるだけだろう、さすがに。
0885847
NGNGさんきゅーべりーまっち
助かりました、ありがとう。
ログオンユーザの所属するグループも、
レジストリ参照になるのでしょうか?
HKEY_LOCAL_MACHINE\\SAMを見ろ、みたいな情報は
見つけたのですが、2000のスタンドアロン環境では
SAMの下にもSECURITY下にも、何も無いみたい・・
スマンが誰か教えてけろぉ〜
0886デフォルトの名無しさん
NGNGSetWindowsHookExでグローバルフックをかけて、特定のキーコードの時だけは、
CallNextHookExを呼び出さずに別のキーコードをPostMessageで投げ、
trueを返してメッセージを破棄するプロシージャを書いております。
まずまず期待道理の動作をしてると思っていたんですが、IMEがONの時はなんだか動作がヘンです。
具体的には、ONでもOFFでも無関係に直接入力されてしまうのですが、
これはIMM APIとかをいじらないとダメなのでしょうか。よろしくお願いします。
0887デフォルトの名無しさん
NGNGWM_IME_ENDCOMPOSITION
0888デフォルトの名無しさん
NGNG> ONでもOFFでも無関係に直接入力されてしまうのですが
は正しい動作。他アプリのIME入力も調べたいのであればWM_IME系の
メッセージをフックするしかないと思う。
ちなみに、何をしたいかにもよるが>>887よりは
WM_IME_COMPOSITIONの方がいいかも
0889デフォルトの名無しさん
NGNG半分くらい理解できました。ご説明、どうもありがとうございます。
とりあえずこっちのフックは、IMEがONの時は無視することにして、
また別のコーディングをすることにしました。お騒がせしました。
0890デフォルトの名無しさん
NGNGReadFile(hReadFile , strFile , 7 , &dwReadSize , NULL);
としたんですが、その内容を出力してみると読み込めていないようです。
ファイルの最初のほうにファイルデータのようなものが記録されているため
だと思うんですが、そうだとしたらそのファイルデータのようなものの
サイズはどうやって取得すればいいんでしょうか?
0891デフォルトの名無しさん
NGNGテキストファイルにヘッダがあるのか?
ReadFileの戻り値とdwReadSizeが正常なら、出力に問題があるんじゃないの?
0892890
NGNGif(ReValue==dwReadSize) MessageBox(NULL , TEXT("サイズ正常") , NULL , MB_OK);
これでメッセージボックスが出ました。
読み込み自体は成功していると思っていいですか?
0893890
NGNG調べたらdwReadSizeがNULLでした。
0894デフォルトの名無しさん
NGNGdwReadSizeの値がゼロ(NULL)→ゼロbyteしか読み込んでいない。
で一致してメッセージボックスが出たんでしょ。
ファイルハンドルhFileか、読み込み先メモリのほうを調べたらいいんじゃないの。
0895デフォルトの名無しさん
NGNG0896890
NGNGReadFile(hReadFile , strFile , GetFileSize(hReadFile , NULL) , &dwReadSize , NULL);
MessageBox(NULL , strFile , NULL , MB_OK);
としたら、メッセージボックスにファイル内容はしっかり表示されました。
もうなんか意味ワカメです。
0897デフォルトの名無しさん
NGNG長いプログラムだからいちいち説明してられんのでつよ。
糞マニアックな機構を持ってる強力なセキリティ(藁
疲れるので鯖はLinuxかBSDへの移行をおすすめしまつ。
↓これだけでも一部分
セキリティ記述子(SD)は下に示す四階層の構造を持つ。
/* セキリティ記述子の構造 */
SD { // セキリティ記述子
オーナーID
グループID
ACL(s) { // アクセス制御リスト(監査用)
ACE { // アクセスエントリ(複数)
アクセスマスク
SID // セキリティ識別子
}
}
ACL(d) { // アクセス制御リスト(随意)
ACE { // アクセスエントリ(複数)
アクセスマスク
SID // セキリティ識別子
}
}
}
0898デフォルトの名無しさん
NGNGセキリティ記述子(SD)
二つのアクセス制御リスト(ACL)を持つ。
ACLの片方は監査、片方は随意。
監査ACL(SACL)は監査プログラムに制御される。
随意ACL(DACL)はユーザーに制御される。
各ACLは複数のアクセス制御項目(ACE)を持つ。
各ACEは一つのセキリティ識別子(SID)を持つ。
セキリティ識別子(SID)
WIN32SDKヘルプによると:
SIDの標準簡略表記法によって、 SIDの各要素を簡単に視覚化できます。
S-R-I-S-S...
上記の表記法で、
SはSIDの数字列の開始を示す識別記号、
Rはリビジョンレベル、
Iは識別子オーソリティ値、
Sはサブオーソリティ値です。
この表記法によるSIDの例を次に示します。
S-1-4138-86
上記の例のSIDのリビジョンレベルは1、
識別子オーソリティ値は4138、
サブオーソリティ値は86です。
識別子オーソリティ値は、 SIDを発行したエージェンシ
(通常はMicrosoft(R) Advanced Server(TM)のドメイン)を
識別する値と、 そのエージェンシ内のユーザーやグループを
一意に識別する32ビットの相対識別子(RID)で構成されます。
まだまだ続くのだが(藁
0899デフォルトの名無しさん
NGNGCreateProcessで使ったPROCESS_INFORMATION構造体のdwProcessIdを、
EnumWindowsのコールバック関数の中でGetWindowThreadProcessIdして得たIDと比較して、
そのウィンドウハンドルをSetParentするなりSetWindowLongするなりして子にすれば?
対象ウィンドウのウィンドウクラスやウィンドウタイトルが一定ならもっと簡単だけど
0900デフォルトの名無しさん
NGNGなぜGetLastErrorしない?
0901885
NGNG超ウルトラスーパーサンクス♪
そんなに大げさな作りだったとは・・
失礼、強力なセキュリティ機構と想像を越えておりまつた。
イベントログの説明文を、
引っ張ってこようとした時を思い出した。
先が長そう・・・
Thanks,
0902デフォルトの名無しさん
NGNG>強力なセキュリティ機構と想像を越えておりまつた。
なので、MS傘下のPGさえ面倒臭がってデフォルト以外を使おうとしない。
↓
安易にadmin権限を要求するアプリが出来上がる。
↓
セキュリティ台無し
0903デフォルトの名無しさん
NGNG・strFileは読み込むのに十分な領域があるか
・読み込んだ文字列は'\0'終端になっているか。 ReadFileは勝手に'\0'を付けてくれないぞ。
・読み込んでるファイルは本当にテキストファイルなの?
0904デフォルトの名無しさん
NGNGハンドルが開放されたら無効になる無名ファイルって作れなかったっけ?
0905デフォルトの名無しさん
NGNG安易に別権限を要求・作成するのがウザイ。
↓
空のACLをつくる(EveryoneAllow)。
↓
より一層セキュリティ台無し
0906デフォルトの名無しさん
NGNG指しますが、その昔、16bit時代には、DLL形式のカスタムコントロール
というのがあって、VBXが出る前は、カスタムコントロールといえば、
この手法を指していました。
この手法は、現在のWin32環境(.Netではない)でも実現できるので
しょうか。というのも、今回の開発では、MFCの使用を禁止されている
ため、ActiveXコントロールの実装ができません。したがって、DLL型の
カスタムコントロールが実装できないかと調査中です。
できるという情報も、不可能という情報も見つかりません。
ご存じの方、ご教示ねがいます。
0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNG0909906
NGNG例えば、特殊なテキストボックス等を作成する予定です。
旧カスタムコントロールが使えない場合、標準コントロールを
サブクラス化する手法も考えてしますが、今のところ、まだ
カスタムコントロール化をあきらめていない状況です。
0910890
NGNGありがとうございます。解決しました。
Memory = strFile;
free(strFile);
MessageBox(NULL , Memory , NULL , MB_OK);
このように出力していたんですが、2行目と3行目の位置を入れ替えたら
文字列がちゃんと出てきました。
0911906
NGNGATLの使用も禁止されています。理由は、他のランタイムを使用する
ことにより、配布先環境のバージョン相違や相性から起因する不具合を
極力防ぎたいという理由からです。
Windowsなんてランタイムのかたまりなんで、この時点で、
そもそもおかしな話だと思うのですが。
0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG0914906
NGNGさっき言った理由以外に、ベースPGが16ビットのCのみだった
ということと、スタティックリンクになると実行モジュールが
大きくなるという理由で、パスしたいとのことです。
ま、通常、そこまでわがまま言うなら、カスタムコントロールなど
使わずに標準コントロールで我慢せい!ってところですが、とりあえず
今のところは指示通りでいけるかどうか、調査しているところです。
0915デフォルトの名無しさん
NGNG0916906
NGNG使うもなにも、ウィンドウクラスを作れば、それで終わりって
話なんですかね。
であれば、そのようなドキュメントが見つからないのも納得です。
とりあえずサンプル作ってみます。
みなさんありがとうございました。
0917デフォルトの名無しさん
NGNG一体どんなプロジェクトなのだろう?
0918デフォルトの名無しさん
NGNG0919906
NGNG単純にDLL化されたウィンドウクラスをダイアログに
貼り付けて動かすことに成功しました。
ありがとうございました!
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGエクスプローラーで、CD-Rドライブへファイルをドラッグ&ドロップして、ウイザードで焼くやつ。
あれを自動化して、ファイルのバックアップを取りたいと思っているのですが、
あの機能のAPIってだれかわかりませんか?
0922デフォルトの名無しさん
NGNG"CD-R"をSDKで検索かけたらXP/Server2003用COMインタフェース"IDiscRecoder"が出てきたわけだが‥‥
SDKくらいは調べませう
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNG■やりたいこと:
1 デスクトップ上のウィンドウをZオーダ順に並べた配列を作りたい。
2 ↑その配列を常に最新の状態に保ちたい。
■困っていること:
1はEnumWindowsとGetNextWindowでできました。
で、2もフックプロシジャでWM_CREATEとWM_WINDOWPOSCHANGEDを捕捉すればOKかと思ったんですが、
EnumWindowsで取得される「トップレベルウィンドウ」に該当するかどうか判定する方法がわからなくなりました。
GetParentやGetWindow(hwnd, GW_OWNER)で判定しようと思ったのだけど、
どうもEnumWindowsで取得されるウィンドウには、ParentやOwnerを持っているものが含まれるらしく、
それらを除外してしまうとZオーダ順の配列が作成できません。
WM_CREATEが発生する度にEnumWindowsを呼び出して照合すればよいのですが、
もっとスマートな方法がないものでしょうか? ご存知の方、よろしくお願いします。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNG試してみたのですが、なぜかEnumWindowsで取得したウィンドウに
WS_CHILDフラグを含むものが幾つかあるんです。
■ソース(Delphi7)
var
arrRec: array of HWND;
// ↑EnumWindowsで取得したHWNDの配列
procedure TForm1.Button2Click(Sender: TObject);
var
iM: Integer;
begin
for iM := 0 to High(arrRec) do begin
if (GetWindowLong(arrRec[iM], GWL_STYLE) and WS_CHILD) <> 0 then
Memo1.Lines.Add(
IntToStr(arrRec[iM])
+', '+ IntToStr(GetWindowLong(arrRec[iM], GWL_STYLE) and WS_CHILD)
);
end;
end;
■結果
197414, -1006632960
131860, 1149272337
393984, 1151369489
(以下略)
0927デフォルトの名無しさん
NGNGa. WS_CHILD でない
b. 親ウィンドウが無い
c. 親ウィンドウがデスクトップウィンドウ
のどれかを満たすものがトップレベルウィンドウの様ですよ。
0928デフォルトの名無しさん
NGNGMSDN読んでくれ。
EnumWindows 関数は、子ウィンドウは列挙しません。ただし、WS_CHILD スタイルを
持つ、システムにより所有されたいくつかのトップレベルウィンドウは例外です。
0929デフォルトの名無しさん
NGNG「属性」の下に「コンピュータの保護のため、このファイルへの
アクセスはブロックされました。」というメッセージと「ブロックの解除」
というボタンが表示されるのですが、これをプログラムから付けたり
消したりするにはどうしたらいいのでしょうか?
0930デフォルトの名無しさん
NGNGありがとう! 参考にして改良してみます。
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/enumwindows.asp?frame=true
と、MSDNの該当ページ貼っておきます(英語版だけど)。
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNGドロップ先のフォルダを知るにはどうしたらいいのでしょう?
0934デフォルトの名無しさん
NGNG知る方法はない。
0935デフォルトの名無しさん
NGNG確か、sh系の命令でできたハズ・・・
0936デフォルトの名無しさん
NGNGWindowsXPならRas*系が使えそう(ras.hでRASDT_PPPoEが定義されている)けど、
2kでも動かす必要があるので・・・
0937デフォルトの名無しさん
NGNG0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGないと思う。たぶん。
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNG>>940
分かりました。もう少し調べてみます。
>>941
SendMessageでちょこちょこ書き換えたいので、出来ればそれは避けたいんです
0943デフォルトの名無しさん
NGNGWM_CTLCOLORBTN
0944デフォルトの名無しさん
NGNG記憶がある。
0945デフォルトの名無しさん
NGNG0946945
NGNG0947デフォルトの名無しさん
NGNGSetTimerでウィンドウを指定しないのは珍しいな。
周りのコードを読んでみないことには分からんが、MSDNには
>TimerProc コールバック関数を利用する場合も、呼び出し側スレッドでメッセージをディスパッチ (転送) する必要があります。これは、デフォルトウィンドウプロシージャがコールバック関数を呼び出すからです。
と書いてある。その辺は大丈夫?
0948947
NGNGそれならますますPeekMessage系、TranslateMessage、DispatchMessage
のセットが通っていないっぽいな。コンソール入力待ち中にコールバック関数が
正しく呼ばれるかどうかは知らないけど、タイマー処理よりマルチスレッド
にしたほうが確実なような気もする。
0949デフォルトの名無しさん
NGNGSetWaitableTimer って手もありかと。
0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG「(FUNCのアドレス)ミリ秒毎に100番地のコードを実行」してるのかな。
ひたすらtimeGetTime()を呼び続けるって手もあるにはある。
CPU大忙しだろうけど。
begin = timeGetTime();
while (1) {
end = timeGetTime();
if (end - begin >= 100) {
...
begin = end;
}
}
0952デフォルトの名無しさん
NGNG「メッセージポンプがない」
に一票。
0953デフォルトの名無しさん
NGNG呼ばれないというのはFAQだぞ
0954デフォルトの名無しさん
NGNGConsole Applicationで作ったのですがDOS窓が開いてしまいます。
どうしたら画面無しで作れるのでしょうか?
Win32APIで制御できませんか?
0955デフォルトの名無しさん
NGNGNT系ならサービスにする
0956デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR pCmdline, int nShowFlag)
{
return 0;
}
0959デフォルトの名無しさん
NGNG0961945
NGNGそもそも目的は、周期的にコールバックする機能が欲しかっただけなのです・・・・・・・
>>947,>>949
間違えました。SetTimer(NULL,NULL,100,FUNC);でした。すいません。
>>948,>>952,>>953
メッセージディスパッチはやってませんでした。やる必要があったんですね。知りませんでした。ありがとうございます。
しかし、コンソールの場合ウインドウハンドルはどうすればいいのでしょう?
>>950
結局、そうしました。
>>951
それはちょっと・・・
0962デフォルトの名無しさん
NGNGPeekMessageのウインドウハンドルはNULLでおk
0963962
NGNG0964デフォルトの名無しさん
NGNG適当にループ回してWaitFor〜でタイムアウト待ち。これ。最強。
0965デフォルトの名無しさん
NGNG間違ってる?
0966デフォルトの名無しさん
NGNGどこからマルチメディア関数使う発想が沸いて来るのかと、小一時間(ry
そもそも、待ちができないし、timeGetTime()。
timeSetEvent()の事でしょ?でもどうかと思うよ、これ。
マルチスレッドだし。(最優先度のスレッドが起動する。)
初心者が使うのは1年はやい。
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG普通のWindowから操作したいと思っています。
(要はコンソールみたいなものを自前で作りたい)
起動したプロセスが標準入力(実際はパイプ)の入力待ちになっていたら
WM_CHARで来たキャラクタをパイプに突っ込みたいんですが、
「プロセスが入力待ちで待機している」
または
「パイプのRead側にプロセスが接続された」
という状態を知る方法はありますか?
0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG続く処理をスレッドにしてしまって、放置して処理を返したいのですが、
CreateThreadで作成したスレッドハンドルはCloseHandleしないと
メモリに残ると聞きました。
そこで、CreateThread直後にCloseHandleしようと思うのですが、
スレッドが処理中にハンドルを閉じても、大丈夫なんでしょうか?
0971デフォルトの名無しさん
NGNG自分で、試せないのか?
0972デフォルトの名無しさん
NGNGちょっと試して大丈夫だからと言って、ずっと大丈夫な保証は無いぞ。
特にマルチスレッドなプログラムではな。
0973デフォルトの名無しさん
NGNGそれとは別にCreateThreadが返したハンドルのために参照カウントが
1つ増えて、ハンドルを閉じたときに1つ減る。
つまりハンドルを閉じなければ走行中の参照カウントは2になる。
だからスレッドが終了してもハンドルを閉じるまでは消えないし
逆にハンドルを閉じてもスレッドが終了までは消えない。
長々と書いたがようするに大丈夫ってこった
0974デフォルトの名無しさん
NGNGもちろん自前で管理します。
自前で管理するために、起動先のプロセスが標準入力の
入力待ちになったことを知りたいんです。
入力待ちになっていたらパイプに文字を書き込む。
入力待ちになっていなかったら何もしない。
要はパイプに書き込むためのトリガーが欲しい訳です。
0975968=973
NGNG1.スレッドの状態取得
2.待ち状態であれば待ち要因を取得
3.待ち要因が標準入力の入力待ちであればパイプに書き込み
というような処理をイメージしてます。
あるいは別のパターンとして
1.パイプの入力待ち行列を取得
2.待ち行列に起動先プロセスのスレッドがあればパイプに書き込み
なんてのでもいいです。
ITRONだとref_tskとかref_semとかのref_xxx系関数で上記のような情報が
取得できるんですけど、Win32APIでret_xxxに相当するAPIって何になるんでしょ。
MSDNを調べまわったんですけどどうにもわからなくって・・・。
0976デフォルトの名無しさん
NGNG2章の最後の練習問題2がどうしてもできません。
「WM_PAINTで文字を出力して、WM_RBUTTONDOWNのときに先ほど出力した文字の
色を変えるようにしろ」という問題です。
WM_RBUTTONDOWNのときにInvalidateRectで消して文字色つきで再描画しようと
したのですが、永久ループになってしまいました。
プークスクスとか言われるかもしれませんが、どなたか解る人がいたら
教えてください。
0977デフォルトの名無しさん
NGNGまずどんなソースを書いたのか肝心の部分だけでいいから晒せ。じゃないとアドバイスのしようも無いぞ
0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNGどうして入力待ちになったかどうか知る必要があるのか分からないんだけど。
0981976
NGNG頭悪いとか思うかもしれませんが、よろしくお願いします。
これは文字色は黒のままで右クリックしても変わりません。
WndProcのなかの一部です。
switch (msg){
case WM_PAINT:
switch(i){
case 0:
break;
case 1:
GetClientRect(hWnd, &rc);
hdc = BeginPaint(hWnd, &ps);
DrawText(hdc,
(LPCTSTR)szStr,
(int)strlen(szStr),
&rc,
DT_LEFT );
EndPaint(hWnd, &ps);
break;
}
break;
case WM_RBUTTONDOWN:
InvalidateRect(hWnd, &rc, TRUE);
GetClientRect(hWnd, &rc);
dtp.cbSize = sizeof(DRAWTEXTPARAMS);
dtp.iLeftMargin = 20;
dtp.iRightMargin = 20;
dtp.iTabLength = 4;
0983976続き
NGNGSetTextColor(hdc, RGB(255, 0, 255));
DrawTextEx(hdc,
szStr,
-1,
&rc,
DT_WORDBREAK | DT_EXPANDTABS | DT_TABSTOP,
&dtp);
EndPaint(hWnd, &ps);
i = 0;
break;
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGWM_PAINT のときに SetTextColor(hdc, RGB(r, g, b));
WM_RBUTTONDOWN のときに r, g, b の値を変更して InvalidateRect();
でいかが?
0986デフォルトの名無しさん
NGNGとりあえずWM_PAINT以外でBeginPaint/EndPaintしたらだめ。
0987976
NGNGできました!!ありがとう981さん!!
これでぐっすり眠れます。
0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNGAPI関係ということで、ここで質問させてください。
2003Serverで使えるAPIかどうかを調べるツールがMSのHPに
あるらしいのですが、どこにあるかわかりません。
どなたか教えてください。
また、それ以外に2003Serverで使用可能なAPIを調べる方法が
ございましたら、ご教授願います。
よろしくお願いします。
0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNGそんなこと言わずに、教えてください。
お願いしますm(__)m
0992デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNGたとえば以下のように書いてある。これ以上何を望むのだ?
Windows NT/2000:Windows NT 3.5 以降
Windows 95/98:Windows 95 以降
0995デフォルトの名無しさん
NGNG>>993に適する回答はMSDN嫁なんじゃないかな。ドキュメントがどこにあるのか分かってないような言い方だから
- Win32API質問箱 Build18
http://pc5.2ch.net/test/read.cgi/tech/1081702990/
0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。