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


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

Win32API質問箱 Build66



1 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:33:42 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build65
pc11.2ch.net/test/read.cgi/tech/1208847084/

830 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 18:18:29 ]
HWND hwnd = FindWindow( ... );
// この間にhwndがDestroyされると届かなくなるので必ず届くなんて不可能
SendMessage( hwnd, ... );

昔9x使ってたら、DestroyしたHWNDが割と近い時間で他のウィンドウに使用されて困ったことがあったけど
NTだと確か上位16ビットが再利用カウンタだからそういう衝突は無いかな

831 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 18:31:58 ]
初めて聞いたぞそれ

832 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:26:56 ]
あっそ

833 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:50:47 ]
でっていうwwwwwwwwwwww

834 名前:デフォルトの名無しさん [2008/06/03(火) 21:30:08 ]
SendMessageした先からSendMessageで返事を返してもらう、って出来る?

835 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:18:24 ]
スレッドが違う前提の話だよな。
SendMessageをもらって、ウインドウプロシージャが走ってから
そいつが返事をSendMessageするまでの間に、
ReplyMessageしとけばいけるんでない。

836 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:38:11 ]
SendMessageを投げあってデッドロック!!!マジカッコイイ!!!

837 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:39:32 ]
SendMessageへの返事は返値でしなさいよw

838 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:59:01 ]
SendMessageは同期させたいときに使う。




839 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:17:41 ]
>>149
>フォーカスを失っても青のままにしたい

subclass化して WM_KILLFOCUS をブロック

840 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:01:07 ]
>>830>>835
大丈夫。SendMessageの戻り待ちで止まっているスレッドのウィンドウへSendMessageが送られると、
Windowsが直接ウィンドウプロシージャを呼び出す。
Advanced Windows辺りに書いてあったはず。

841 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 03:47:02 ]
質問です。
BitBltでビットマップの転送を行うとして、、
転送先のビットマップの大きさの範囲を超えるように引数を指定した場合、
この動作の定義はどうなっているのでしょうか?
はみ出たところにあったデータが壊れる心配はないのでしょうか?

842 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:03:42 ]
>>841
GDIはそういう心配する必要なし

843 名前:841 mailto:sage [2008/06/04(水) 04:29:13 ]
>>842
これで心置きなく転送できます。
ありがとうございました。

844 名前:デフォルトの名無しさん [2008/06/04(水) 16:32:06 ]
簡易的なタブエディタを作っているのですが
テキストは開いた順に配列に入れて、たとえば2番目のタブを選択したら
配列の2番目から取り出して表示するという方法でいいんですか?

845 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:36:41 ]
そんなもん貴方がどう実装したいのかによるでしょ
メモリ食ってもいいのか、なるべく食わない方がいいのかとか

つかAPI関係ないだろ

846 名前:デフォルトの名無しさん [2008/06/04(水) 16:36:52 ]
よくわからんけどいいよ

847 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:44:40 ]
タブエディタが何か分からない

848 名前:デフォルトの名無しさん [2008/06/04(水) 16:46:36 ]
>>847
しね



849 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:49:52 ]
タブ譜のエディタですね、分かります

850 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:55:55 ]
つまんね

851 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 16:58:40 ]
訳:かまってほしいな

852 名前:844 [2008/06/04(水) 17:00:22 ]
>>845
この方法だとメモリを食いそうなんでこれでいいのか、
他に良いスタンダードな方法があるのかと疑問に思ったので。
タブとかeditコントロールはAPIなのでここで質問してみました

>>846
よさそうならこれで作ってみます。どうもです

853 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:34:54 ]
Win32APIでエディタを作っています.
ステータスバーに現在のキャレット位置を表示するために
下記のコードを書いてみたのですが,列の表示が上手くできません.
何か良い方法をご存知でしたら教えて下さい. m(_ _)m

caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y));
pt.y = HIWORD(caretPos) + 1;
caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, 0));
pt.x = LOWORD(caretPos) + 1;
wsprintf(str, " %d 行, %d 列", pt.y, pt.x);
SendMessage(hStatusbar, SB_SETTEXT, 1, (LPARAM)str);


854 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:59 ]
>>852
メモリの使用量なんて作ってみたらわかることだ。
初心者なら、作る前に答えを欲しがらずに、作って考えることだ。

855 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:03:32 ]
>>854
偉そうに上級者面するな

856 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:12:23 ]
そいつゲイツだぞ

857 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:39:06 ]
だから?

858 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:41:49 ]
お布施しろ



859 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:20:18 ]
どうやって?
PayPalで送金するのか?w

860 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:11:05 ]
とりあえず、VistaのUltimateを10本ほど。

861 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:42:29 ]
ケチケチすんなよ
MSDN Premium Subscriptionをパッケージで50本くらい買えばおk

862 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:25:19 ]
>>860
Vistaなんてイラネーヨ

>>861
おk
明日買ってくる

863 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:14:29 ]
>>853
キャレット位置ならEM_GETSELから調べ始めればいいんじゃね?

864 名前:いのぶー mailto:sage [2008/06/05(木) 22:58:59 ]
 ペイントを操作して、絵を描こうとしているのですが、ウィンドウをポップアップできてもドローイングエリアを
クリックできません。
C#の板でスルーされたのでやってきました、お願いいたします、教えていただけませんでしょうか? 。
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindowEx(IntPtr hWnd, IntPtr hwndChildAfter, String lpszClass, String lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int left;
public int top;
public int right;
public int bottom;
}
const uint WM_LBUTTONDOWN = 0x201;
const uint WM_LBUTTONUP = 0x202;

public void RemotePaint() {
IntPtr hWnd = FindWindow("MSPaintApp", null);
SetForegroundWindow(hWnd);
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null);
RECT winRect = new RECT();
GetWindowRect(hWnd, ref winRect);
PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top);
PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);
}

865 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:03:24 ]
>>864
PostMessageでDOWNした後UPする前にスリープを入れる

866 名前:いのぶー mailto:sage [2008/06/05(木) 23:16:45 ]
早速のレスをありがとうございます。

Sleepを入れてみたんですが、点を打ってくれませんでした。 (T_T)

PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);

867 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:53:40 ]
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

C丼はあまり詳しくないが、この辺のAPI宣言って合ってるのか?
Win32のBOOLとC++や.NET系のboolって別物のはずだが

868 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:58:22 ]
それはあってるよ。
C#のboolは1バイトだけど、Platform呼び出しの際は、
特に指定しなければデフォルトで4バイトBOOLにマーシャリングされる。



869 名前:いのぶー mailto:sage [2008/06/06(金) 00:01:48 ]
一応、ペイントはアクティブになってくれています。

この辺りとかでは、
public static extern bool SetForegroundWindow(IntPtr hWnd);
って書いたサンプルがあったので、それを参考にしています。

ttp://www.atmarkit.co.jp/fdotnet/dotnettips/151winshow/winshow.html


870 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:06:43 ]
>>868
へ〜そうなんだ
VB6とかBooleanじゃなくてLongにする必要があったのに、便利な時代になったなぁ

871 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:21:52 ]
クライアント領域の右下隅をクリックしたいように見えるけど、
GetWindowRectの結果使ったらボーダーの分だけはみ出さないかい?
そもそもその右下の点に画像はあるのか

872 名前:いのぶー mailto:sage [2008/06/06(金) 03:49:20 ]
RECTを取る前に
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null);
で、hWndにドローイングエリアのウィンドウハンドルをセットしなおしていますが、
それではダメでしょうか?

hWndを使いまわしていて、汚くてごめんなさい。

873 名前:いのぶー mailto:sage [2008/06/06(金) 03:55:58 ]
追伸ですが、以下のように、座標を固定で指定してやってもダメでした (T_T)

PostMessage(hWnd, WM_LBUTTONDOWN, 100, 100);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, 100, 100);




874 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 06:26:02 ]
ふつーSendInputとか使う。

875 名前:デフォルトの名無しさん [2008/06/06(金) 07:13:29 ]
SendInputってフォアグラウンドじゃないとだめじゃなかったっけ

876 名前:853 mailto:sage [2008/06/06(金) 07:37:22 ]
>>863

回答ありがとうございます.
EM_GETSEL は有力ですよね.
実は自分も最初はそれを考えて,

pt.x = LOWORD(SendMessage(hEdit , EM_GETSEL , NULL , NULL));

として列の位置を求めようとしていたのですが,

↓(1行,1列)
1234\r\n
6
↑(2行,1列)になってほしいけど,
実際には(2行,6列)... ORZ

という結果になってハマってしまったので,
ここで質問してみました.
結構メジャーな目的なので,どなたかご存知の方が
いらっしゃいましたら良い方法をお願いします. m(_ _)m
後の人のためにも.
(できればWin32APIで,テキスト全体をバッファに入れて改行を数えるとかは
最後の手段かなと思っています.)


877 名前:853 mailto:sage [2008/06/06(金) 08:11:01 ]
解決しました.

offset = LOWORD(SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM((WORD)0, pixPt.y)));

を設定して引いてやるだけでした.
前にこの方法も試していたのですが,pix での位置と char型 での位置が
きちんと区別されていなかったために失敗していました.
お騒がせしました.


878 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:45:22 ]
(WORD)0

なんでこんな書き方するのか分からん



879 名前:デフォルトの名無しさん [2008/06/06(金) 15:22:28 ]
分からないならレスするなつってるだろ?

880 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:38:14 ]
すいません

881 名前:デフォルトの名無しさん [2008/06/06(金) 15:41:37 ]
どんまい

882 名前:デフォルトの名無しさん [2008/06/06(金) 16:14:32 ]
吸いませんじゃなくてすみませんだろ?

883 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:17:57 ]
吸わないよ


884 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:23:21 ]
(WORD)0

なんでこんな書き方するのか分からん

885 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 16:25:28 ]
break;

886 名前:デフォルトの名無しさん [2008/06/06(金) 16:59:07 ]
訳:かまってほしいな

887 名前:いのぶー mailto:sage [2008/06/06(金) 22:01:53 ]
皆様、ありがとうございます。

sendInputというキーワードのおかげで、下記のページを見つけることができました。
homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268

 おかげで、sendInputを使って、点が打てました。
これを取っ掛かりになんとかやってみたいと思います。


888 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:10:33 ]
>>872
GetClientRectでとれるのが「クライアント領域」、早い話がウィンドウ内部の領域
マウスイベントで指定する座標系はこれが基準。
GetWindowRectでとれるのは「ウィンドウ領域」、境界線とかも含んでいるので
一般にクライアント領域より大きい。
ちなみにRectで指定する座標は「右と下が1大きい」ものなので(理由は省略)
>866の計算だと、GetClientRectの結果使ったとしてもやはり1ドットはみだす。
以上参考までに。



889 名前:いのぶー mailto:sage [2008/06/06(金) 23:31:46 ]
888さん、ありがとうございます。(ゾロ目ですね・・・)

GetClientRectでとれる「クライアント領域」が基本とのことなのですが、
GetWindowRectでドローイングエリアの座標領域を取って、Cursorを動かして、
SendInputクリックで左ボタンダウンとアップイベントを作ってクリックしているのですが、
「クライアント領域」を使った、いい方法があるのでしょうか?

当方、「クライアント領域」の有効な使い方が解っていないので、
よろしければご教授願えませんでしょうか。教えていただけると
うれしいのですが・・・

890 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:16:53 ]
>>889
有効とかどうとかじゃなくて、基本的な区別がわかってない
君がいう「ドローイングエリアの座標領域」の外側と内側とか
座標系の基準の違いとか色々ごっちゃにしてるって話
ここで説明できるような内容じゃないので入門書読め

891 名前:いのぶー mailto:sage [2008/06/07(土) 00:25:15 ]
別に、原点が画面の左上か、ウィンドウ(又はウィジェット)の左上というだけの話では?


892 名前:いのぶー mailto:sage [2008/06/07(土) 00:31:04 ]
こんな風に書いているので、問題があったら知りたいなぁという以上の意味はないので・・・

// ドローイングエリアの真ん中へ移動
Cursor.Position = new Point((winRect.left + winRect.right) / 2, (winRect.top + winRect.bottom) / 2);
//クリック
INPUT[] input = new INPUT[2]; // 計2イベントを格納
input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(2, input, Marshal.SizeOf(input[0]));


893 名前:いのぶー mailto:sage [2008/06/07(土) 00:46:46 ]
追伸、

466の記述時点では、Rectで何の値が取れるか分かっていなかったのですが、
デバッグプリントして、理解して、887の時点では、なんとか好きな所に点が打てるように
なっていました。
(おそらく、入れ違いになってしまったのでは・・・と思っています。)

 ただ、この場合に、ウィンドウ内の座標を使って何ができるのかが知りたいのです。
 この場合、テンプレの本を薦められても対象が高域過ぎるのでお勧めのURLや書籍
でもあれば、明日にでも探しに行きたいと思います。


894 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:01:28 ]
いい加減うざいです><
Win32スレなのか.NETスレなのか分かりません><

895 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:16:31 ]
ここってWin32APIスレですよね><
言語が.NETだろうとWin32の話なら全然構わないと思います><

896 名前:デフォルトの名無しさん [2008/06/07(土) 03:27:14 ]
たとえば、スレッドの中にスレッド作った場合の注意点ってある?
開放する順番以外に。windowsスレッドって、ExitThread(true)で
自動で開放されたりしない?ハンドルクローズしないとダメ?

897 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:45:01 ]
windowsスレッドって何だよ
windows板なら分かるが

898 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 04:47:09 ]
>893
何ができるかとかいう問題じゃなくて
┏━┓
┗━┛
この枠の内側測るのと外側測るのじゃ大きさが違うだろ?
内側から測れって言われてるのに外側から測った数字使ってたりしたら
細かいところで計算が合わないからちゃんと意識しろってこと。



899 名前:896 mailto:sage [2008/06/07(土) 06:05:37 ]
>>897
Linuxのプロセスみたいにゾンビプロセスが残るのかとか
windows のスレッドはexitThread(true)でスレッド開放されるのかとか

900 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 06:41:38 ]
スレッド自身がExitThreadを呼び出すか、スレッドの関数から戻ればスレッドは止まる。
どのスレッドによって作られたか、などということは一切関係ない。
また、そのスレッドを参照しているすべてのスレッドハンドルをCloseHandleしなければならない。
スレッドハンドルを閉じていないということは、まだ使うということだから。
スレッドがシグナル状態になっているかどうかを見るなど。

pthreadだって、明示的にpthread_joinかpthread_detachしなきゃならんだろ。

901 名前:いのぶー mailto:sage [2008/06/07(土) 06:56:28 ]
> 898

 取れる数字に対する注意点を教えていただいたと理解しました。
894さんとか、うざがってる方もいることですので、この話題を終了したいと思います。

ありがとうございました。

902 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 08:06:34 ]
>>899
> ExitThread(true)
こんな事を書いてるということはMSDN読んでないのがバレバレ

903 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:06:32 ]
おいおい・・
そんなこと言ったら、ここの質問全てmsdn嫁で終わるw

904 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:25:25 ]
ちょっと質問ですが、
//tmpgenc.pegasys-inc.com/ja/download/tp.html
TMPGEncの支援ツールを作りたいと思ってます。
主に自動で次々と縁故してくれるように支援するツールです。
そこで、まずファイルをドロップしてファイル名を渡すところですが、ここはどんなAPIを使ってドロップしたことにしてやればよろしいでしょうか?


905 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:27:01 ]
はぁ?

906 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:29:15 ]
>>905
そのTMGENCの画面にファイルをドロップするところを、他のアプリから操りたいのです・・・。


907 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:47:12 ]
はぁ?

908 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:47:55 ]
知らないならレスしないでください



909 名前:904 mailto:sage [2008/06/07(土) 14:50:36 ]
908は私の発言じゃないですよ。

わかりにくいですか?

910 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:53:40 ]
まったく分からない

911 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:54:30 ]
初心者スレ池

912 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:55:06 ]
910は私の発言じゃないですよ。

わかりにくいですか?

913 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:10:01 ]
TMPEGの画面ってのがよく分からんが
画面へのドロップ動作をさせたいならOLE D&Dとマウス動作のシミュレートで良いんじゃね

コマンドライン使えるならそっちの方がいいと思うけど

914 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:12:18 ]
お前は何を言ってるんだ

915 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:12:52 ]
LoadLibraryEx で LOAD_LIBRARY_AS_DATAFILE や LOAD_LIBRARY_AS_IMAGE_RESOURCE を
指定してロードした特定のモジュールのファイル名を、GetModuleFileName で取得できません。
(GetModuleFileName の戻り値は0だが、GetLastError の戻り値は ERROR_SUCCESS)

具体的に言うと、下のページの mxdrv.dll が該当します。
ttp://gorry.haun.org/mx/

どういったケースでそれが起こるのか、誰かおわかりになりませんか。

916 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:27:25 ]
>>913
レスありがと。

ただOLE D&Dって初見なんだけど、これってつまりAPIでファイルを対象のウィンドウにドロップするやつはないってことですか?


917 名前:916 mailto:sage [2008/06/07(土) 15:38:46 ]

自己解決しました、ありがとうございます

918 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:21:57 ]
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?



919 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:28:20 ]

質問です。

対象のアプリのボタン(OKと書かれたボタン)が操作不可かどうかを判断したいのですが、
なにか手はありますでしょうか?


920 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:29:48 ]
フックふっくにしてやんよ

921 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:37:46 ]
IsWindowEnabledでいいんじゃね

922 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:07:40 ]
>>918
Imm〜関数群などを使う。

923 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 17:16:07 ]
IMMの次はTSFだぜ

924 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:31:42 ]
>>923
> TSFとは、異性への性転換を扱うフィクションのジャンルにおける略称である。
ttp://ja.wikipedia.org/wiki/TSF

???

925 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:38:05 ]
ストリートファイターズ……

926 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 18:51:28 ]
アルファベット3文字の略称って大抵は既に何かに使われてるよなw

927 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:26:35 ]
_beginthreadexでつくったスレッドで現在稼動しているもののIDかなんかを取得するのは
どうすればいいですか?Thread.currentThread()みたいなやつ

928 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:33:05 ]
GetCurrentThread
GetCurrentThreadId



929 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:33:19 ]
IDってどういう意味だ?

スレッドハンドルの事を言っているなら、_beginthreadexの戻り値がまさにそれだ。
必要ないなら、ちゃんとCloseHandleしておけ。

スレッドIDの事を言っているのなら、スレッドハンドルに対してGetThreadIdを呼べ。

930 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:37:06 ]
>>927
GetCurrentThread


931 名前:918 mailto:sage [2008/06/07(土) 19:44:58 ]
>>922,923
感謝する。
とりあえず今回はTSFの方向で考えてみようと思う。

932 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:49:55 ]
>>931
え……?性転換ネタでいくの?キョン子はやめたほうが……

933 名前:931 mailto:sage [2008/06/07(土) 20:05:29 ]
>>932
TextServicesFlameworkですよ(汗
...とマジレスしてみる。

934 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:08:52 ]
>>928-930あざーした

935 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:31:21 ]
>>933
Text Services Frameworkですよとマジレス

936 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:37:32 ]
Flamework
燃える仕事か。

937 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:40:20 ]
>>934
一応言っておくと、GetCurrentThreadで得られるのは擬似ハンドルで
自分自身のスレッドを示す事にしか使えないからな。

938 名前:933 mailto:sage [2008/06/07(土) 20:46:31 ]
>>935,936
わざとだ。
ということにしておいてくれ。



939 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:55:32 ]
>>936
仕事熱心でいいじゃないか

940 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:01:53 ]
炎上しているって事はデスマーチなんだろ

941 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:04:22 ]
>>937
なんか書いてありましたね。でも
_beginthreadexの最後の引数に入るDWORDのIDはGetCurrentThreadIdのものと一致しますよね?

あと関係ないと思うんですが、MSDNの

_endthread と _endthreadex によって、C++ デストラクタはスレッドで保留状態になり、呼び出されません。

という日本語の意味がよく分からないんですが、どういうこと?

942 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:14:46 ]
ThreadEntry(PVOID param)
{
 CMyClass hoge;
 kansuu();
}

kansuu()
{
 _enthreadex(0);
}

hogeのデストラクタは呼ばれませんよということ
素直にreturnしとけ

943 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:16:00 ]
日本語の意味が分からなかったら英語版を読めばいいだろ
そもそも日本語版なんてWin95時代から更新止まってるのにそんなの見るなって

944 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:22:00 ]
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

945 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:25:06 ]
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

946 名前:918 mailto:sage [2008/06/07(土) 21:27:22 ]
なんかコピペされてる?
何事ですか?

947 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:28:37 ]
英語MSDNのSendIMEMessageExに
This function is obakadesu and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?

948 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:10:57 ]
MSDNのYieldのところに

ウィンドウを含むスレッドでは、DispatchMessage 関数、PeekMessage 関数、または TranslateMessage 関数を使ってください。

てあるけど、どうやんのかね?



949 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:20:17 ]
ウィンドウを作ったスレッドがなんでyieldなんかするんだよ

950 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:31:29 ]
知らないならレスしないでください

951 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:57:14 ]
糞スレ終了

952 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:37:08 ]
次は、まだかな♪(・ ・。)(。・ ・)まだかな♪

953 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:42:09 ]
質問したいんですけどいいですか?

954 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:44:29 ]
ものによる。まずは質問して。

955 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:49:12 ]
>>948
PeekMessageでぐぐればいろいろ例が見つかるはずだから、そのとおりにやればいい。

956 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:55:24 ]
質問です
CreateThreadで作ったのが糞スレッドかどうか判断するAPIを教えてください

957 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:58:06 ]
CreateThread自体が糞だからそのようなAPIは用意されていません。

958 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:19:20 ]
PCを起動したときに、それまで何日間起動されなかったか知りたいのですが、
前回シャットダウンした日時を取得する方法ってありますか?



959 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 09:05:59 ]
イベントログ

960 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 10:58:25 ]
>>958
>>959のとおり、イベントログに情報がある。

ただ、OS起動やシャットダウンイベントはデフォルト設定だと記録されないはずなので、
設定を変えるか、もっと簡単にやりたいなら正確ではないけどイベントログサービスの
起動/停止時間をOS起動/シャットダウン時間とみなしてしまうやり方もある。

例がWin32APIでなくて申し訳ないけど、以下WMIのインタフェース使うスクリプトの例。

var query =
"Select * from Win32_NTLogEvent where " +
"LogFile = 'System' and SourceName = 'EventLog'";
var systemlogs = GetObject("winmgmts:!\\\\.\\root\\cimv2").ExecQuery(query);
var e = new Enumerator(systemlogs);
for (; ! e.atEnd(); e.moveNext()) {
var log = e.item();
if (log.EventCode == 6005) {//イベントログサービス起動
WScript.Echo("起動: "+log.TimeGenerated);
}
else if (log.EventCode == 6006) {//イベントログサービス停止
WScript.Echo("停止: "+log.TimeGenerated);
}
}


961 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:00:37 ]
親切な人だなぁ・・
質問者じゃないけど、感心した

962 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:26:31 ]
質問者はトリップ付けた方がいいと思うお

963 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 15:22:53 ]
そんな面倒な事わざわざしないお

964 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 18:23:10 ]
IDがあればそんな面倒な事しなくもいいのにね

965 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:07:44 ]
コンボボックスをオーナードローすると
初期表示状態が微妙に縦幅が太くなるんだけぢ
どうやって元に戻すんdねすか?

中身の太さ(高さ)は↓で細くできたんです
void CColorComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = 14;
}

966 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:07:58 ]
またID厨か

967 名前:965 mailto:sage [2008/06/08(日) 19:15:42 ]
もひとつ問題が

オーナードローを可変にすると(CBS_OWNERDRAWVARIABLE)
ボックス内でマウスホイール動かしたときに意味不明な動きをします。
ホイールを下に回してるのに上からビローンって一回転して正しい
位置に回ってきます。なんだこれ。

968 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:46:30 ]
>>966
独り言消えろ



969 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:48:08 ]
またまたID厨か

970 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:53:08 ]
ID厨ウゼェ

971 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:57:41 ]
↑キモッ

972 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:58:33 ]
ID厨の特徴

1. 「IDがあればなぁ」などと書く
2. 自演で荒らす
3. 「やっぱID欲しいな」などと書く

973 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:08:59 ]
やっぱID欲しいな

974 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:09:32 ]
IDがあればなぁ

975 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:29:07 ]
俺の予想では荒らしてるのは一人か二人

976 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:29:14 ]
かまってほしいな

977 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:30:04 ]
>>975
二人以上なのか確実
おれ以外にも居るから

978 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:30:32 ]
× なのか
○ なのは




979 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:32:58 ]
りりかる

980 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:54:18 ]
/* ここまで俺の自演 */

981 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:05:34 ]
/* かまってほしいな */

982 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:10:01 ]
/*
コメント
/*/
スイッチ
//*/

983 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:20:31 ]
>>977
いや一人だ
俺と、俺の中の別人格(=お前)

984 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:24:40 ]
チィッ…右手よ、静まれ!

985 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:38:27 ]
IDがあって困ることはないから、ID導入して欲しいな。
なんでム板はないんだっけ?

986 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:40:04 ]
必要ないから

987 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:45:51 ]
IDは昔はどこもなかった。基本的にはIDが導入される板というのは
人が多く荒れる事が多い板。今までム板では現状のこのスレみたいな
事がほとんどなかったから必要なかっただけかな

988 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:52:30 ]
この程度で荒れてるって・・・



989 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:56:25 ]
機能してない時点で十分荒れてるだろう、ここは雑談系の板ではなく専門板なんだから

990 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:06:49 ]
それに加担してる事は自覚してるのかね


991 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:11:40 ]
自覚してないけど、何か?

992 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:12:33 ]
次スレ建ってないんだから減速しろ

993 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:18:11 ]
建ててくるわ。


Win32API質問箱 Build67

スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

- Win32API質問箱 wiki
wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build66
pc11.2ch.net/test/read.cgi/tech/1210775622/

994 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:27:48 ]
次スレたててきた
pc11.2ch.net/test/read.cgi/tech/1212931246/


995 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:40:15 ]
ume

996 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:40:35 ]
うめ

997 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:41:11 ]
産め

998 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:42:18 ]
埋め



999 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:43:16 ]
おめ

1000 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:43:25 ]


1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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