Win32API質問箱 Build66at TECH
Win32API質問箱 Build66 - 暇つぶし2ch755:デフォルトの名無しさん
08/06/01 17:35:23
goto >>1000;

756:デフォルトの名無しさん
08/06/01 17:36:14
同じく質問があるんですが、なんか変な流れみたいなので自重しときます。

757:デフォルトの名無しさん
08/06/01 17:36:54
コマンドバーのSDKサンプルあるとこ教えてください
海外サイトでもおk

758:デフォルトの名無しさん
08/06/01 17:40:56
>>757
いい加減しつこい

MSDNに説明があるだろうが
あれ読んで分からなかったら猫の糞サンプルでも見て勝手にやってろ

759:デフォルトの名無しさん
08/06/01 17:51:50
>>738,739-740
ワロスwwwwwwwwwwwww

760:デフォルトの名無しさん
08/06/01 18:33:11
スルーしろよ ←今まで我慢してた奴
そういうお前がな ←顔真っ赤な奴
↑お前もな ←呆れた奴

無限ループになるし終われw



761:デフォルトの名無しさん
08/06/01 18:35:51
この手の無限ループは荒らしてる基地外が飽きて沈静化するまで終わらないよ

762:デフォルトの名無しさん
08/06/01 19:48:44
前から言われてるけどID制して欲しいですね。

763:デフォルトの名無しさん
08/06/01 20:13:32
どうせID変えまくって荒らすだけだろ

764:デフォルトの名無しさん
08/06/01 21:07:05
荒らす奴はIDの変え方知らんと思うが

765:デフォルトの名無しさん
08/06/01 21:11:20
ほとんどはID変えてまではしないよ、特にこの板ではありえないそう
同じIDのままならNGで終了だし

766:デフォルトの名無しさん
08/06/01 21:14:47
質問とか答えるときもあった方が便利そうだけどな

767:デフォルトの名無しさん
08/06/01 21:18:03
ハンドルっていうのはポインタと思っとけばいいですか

768:デフォルトの名無しさん
08/06/01 21:26:46
よくないです

769:デフォルトの名無しさん
08/06/01 21:41:04
ポインタのポインタに近いかも

770:デフォルトの名無しさん
08/06/01 21:47:34
質問です
掲示板とかによくあるIDの変え方を教えてください

771:デフォルトの名無しさん
08/06/01 22:11:57
名前欄に fushianasan といれる

772:proxy10.microsoft.com
08/06/01 22:22:49
これでいいですか?

773:デフォルトの名無しさん
08/06/01 22:29:53
今すごい自演を見た

774:デフォルトの名無しさん
08/06/01 22:44:40
fusianasanの場合は文字がもう少し細くなるからバレバレ

775:デフォルトの名無しさん
08/06/01 22:46:46
>>767
ハンドルというのは、中身を意識してはいけないもの。
操作対象のオブジェクトを一意に識別する単なるID。

776:デフォルトの名無しさん
08/06/01 22:50:23
ハンドル
インターネットでいうとIPアドレス
学校でいうと何年何組何番とか

777:デフォルトの名無しさん
08/06/01 22:53:09
>>776
何年何組何番は時とともに変化するから学籍番号のほうが的確かと。

778:デフォルトの名無しさん
08/06/01 23:03:13
ハンドルでわからないアホはプログラム作らなくていいよ

779:デフォルトの名無しさん
08/06/01 23:05:57
車に乗るとき握るものですね、わかります

780:デフォルトの名無しさん
08/06/01 23:08:02
50セントじゃねーの?

781:デフォルトの名無しさん
08/06/01 23:10:59
ステアリングじゃないの?

782:デフォルトの名無しさん
08/06/01 23:15:35
はいはいそこまで

783:デフォルトの名無しさん
08/06/01 23:16:58
object identifierとでも言っておけばいいのに
何でハンドルって言うようになったんだ。

784:デフォルトの名無しさん
08/06/01 23:20:29
なんで初心者って、そういうどうでもいい所が気になるのかねぇ
「適当な固有の値」ぐらいに思ってればいいじゃないの

785:デフォルトの名無しさん
08/06/01 23:21:25
ただの興味本位です。スレ違い失敬。

786:デフォルトの名無しさん
08/06/01 23:35:42
新人に聞かれて答えられなかったらカッコ悪いじゃないか

787:デフォルトの名無しさん
08/06/01 23:37:16
お前に聞く新人なんて誰もいないから心配しなくていいよ

788:デフォルトの名無しさん
08/06/02 00:55:00
いいぞお前ら
もっとやれ

789:デフォルトの名無しさん
08/06/02 01:32:49
とても質問できるような環境じゃないな・・・

790:デフォルトの名無しさん
08/06/02 01:39:27
質問です
基地外を消去するAPIを教えてください

791:デフォルトの名無しさん
08/06/02 02:14:14
( ´∀`)<ぬるぽ

792:デフォルトの名無しさん
08/06/02 02:42:57
ビットマップを直接弄りたいので、
今までCreateCompatibleBitmapで書いていたコードをCreateDIBSectionで作り変えたら、
今まで精々数%しかCPU食っていなかったのに、数十%もCPUを食うようになってしまいました。
CreateDIBSectionで吐き出されたHBITMAPを使って描画するのは、重い処理なのでしょうか。
教えてください。

793:デフォルトの名無しさん
08/06/02 03:07:10
DIBとDDBの違いについて調べろ

794:デフォルトの名無しさん
08/06/02 03:29:45
今更Win32APIw

795:デフォルトの名無しさん
08/06/02 03:48:40
今でもWin32APIw

796:デフォルトの名無しさん
08/06/02 03:56:34
今こそWin32APIw

797:デフォルトの名無しさん
08/06/02 04:53:14
荒らしはwin32API質問箱をなくそうとしてるのか。ひどいな

798:デフォルトの名無しさん
08/06/02 06:16:25
ひどいね

799:デフォルトの名無しさん
08/06/02 07:13:21
>>792
CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
CreateDIBSectionはシステムメモリに確保してる
あとは調べれ

800:デフォルトの名無しさん
08/06/02 07:17:22
VISTA未満の話だけどね

801:デフォルトの名無しさん
08/06/02 08:08:37
>CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
そういう嘘を堂々と書かないように

802:デフォルトの名無しさん
08/06/02 08:22:21
訳:かまってほしいな

803:デフォルトの名無しさん
08/06/02 10:38:12
XP以前でVRAM上に確保されるかどうかはドライバ依存
Vista以降ではドライバに依存しなくなった

804:デフォルトの名無しさん
08/06/02 12:11:21
ATI系のボードはXPでもそういうの遅くなったんだっけ?

805:デフォルトの名無しさん
08/06/02 12:15:27
どうでもいいよ

DDB → VRAMに確保
DIB → システムメモリに確保

ATIとかVistaとかそんな少数派は無視でおk

806:デフォルトの名無しさん
08/06/02 14:22:18
やっぱりIDが欲しいな

807:デフォルトの名無しさん
08/06/02 14:45:57
知らないならレスしないでください。

808:デフォルトの名無しさん
08/06/02 15:11:38
知っているのに知らん振り~

809:デフォルトの名無しさん
08/06/02 15:24:31
ID欲しいというのは大概自演荒らし本人
セキュ板がまさにそれ

810:デフォルトの名無しさん
08/06/02 15:28:24
画面上の任意の色(白)を変える方法ってないですか?
試しに半透明ウィンドウを被せてみたら文字がかすんで使えません。
背景色を変更できないページやフリーソフトはまぶしくてしょうがないです

811:デフォルトの名無しさん
08/06/02 15:30:08
説得力のない大概だな

812:デフォルトの名無しさん
08/06/02 15:32:59
モニターのコントラストとか輝度を調整してみては

813:デフォルトの名無しさん
08/06/02 15:42:41
>背景色を変更できないページ
つ ユーザーCSS

>背景色を変更できないフリーソフト
配色の設定(COLOR_WINDOWとか)に基づいていない糞フトなんて
作者に文句言って修正してもらうか使わなければいいのでは

ってか、最近の液晶って輝度が高すぎなんだよな
モニターの設定で最も暗くしてもまだ眩しかったりするし

814:デフォルトの名無しさん
08/06/02 15:50:27
>>813
いいえ、液晶は発光しませんから。
バックライトが眩しいのは、劣化で暗くなることを想定して明る過ぎる光源を使っているからですね。

815:810
08/06/02 16:12:58
>>812
まぶしくない程度に下げると他が暗くなりすぎたりとなかなか難しいですが
ちょっと調整してみました。どうもでした
>>813
一応設定はしているんですが、変更を受け付けないページやpdfなんかが
目下最大の敵です。

816:デフォルトの名無しさん
08/06/02 17:21:02
暗くすると色諧調が失われる糞モニタなら捨てたほうがいい。
その辺でグレースケールでも拾ってきて調べてみるといい。

817:デフォルトの名無しさん
08/06/02 17:24:45
↑話を理解してない馬鹿

818:デフォルトの名無しさん
08/06/02 17:47:01
>>816
ハード板かCG板にお帰りください

819:デフォルトの名無しさん
08/06/02 18:58:15
知らないならレスするなよクズ

820:デフォルトの名無しさん
08/06/02 19:03:03
>>816
>>819

821:デフォルトの名無しさん
08/06/02 23:19:19
>>810
まさがグレーの半透明被せてないか?
たぶん純黒で不透明度低めのウィンドウを被せれば文字もくっきりするよ

822:810
08/06/03 00:18:58
>>821
はい、グレーのやつでした。さっそく試してみます。
やはり半透明ウィンドウでやるのがよさげなようですね。
ありがとうございました。そしてお騒がせしました

823:デフォルトの名無しさん
08/06/03 00:34:07
ディスプレイドライバに輝度やガンマ調整機能とか無いの?
俺のPCは少数派(笑)のATIだけどドライバの設定でそういう調節ができる。

824:デフォルトの名無しさん
08/06/03 09:47:34
SendMessageとかでメッセージ送れますけど
必ず届くのでしょうか?・・・不安で不安で・・・
共有メモリとかファイル化して渡した方が良いでしょうか?

825:デフォルトの名無しさん
08/06/03 09:53:59
何を渡したいかで決めようぜ

826:デフォルトの名無しさん
08/06/03 09:56:34
ack貰えばいいじゃん

827:デフォルトの名無しさん
08/06/03 11:56:17
SendMessageだと相手のメッセージループに割り込みが入るから大体届くんじゃねーの
ハングしてるスレッドにSendMessage投げてごらん?
投げた側もハングするから。

828:デフォルトの名無しさん
08/06/03 13:43:34
じゃあこうしよう
お前たちのような蛆虫はレスするなってことで

829:デフォルトの名無しさん
08/06/03 14:10:08
SendMessageCallbackやSendMessageTimeoutを使えば対象ウィンドウが応答したかは解るよ。
エラー時にはちゃんとGetLastErrorの値も見るように。

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

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

831:デフォルトの名無しさん
08/06/03 18:31:58
初めて聞いたぞそれ

832:デフォルトの名無しさん
08/06/03 19:26:56
あっそ

833:デフォルトの名無しさん
08/06/03 19:50:47
でっていうwwwwwwwwwwww

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

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

836:デフォルトの名無しさん
08/06/03 22:38:11
SendMessageを投げあってデッドロック!!!マジカッコイイ!!!

837:デフォルトの名無しさん
08/06/03 22:39:32
SendMessageへの返事は返値でしなさいよw

838:デフォルトの名無しさん
08/06/03 22:59:01
SendMessageは同期させたいときに使う。


839:デフォルトの名無しさん
08/06/03 23:17:41
>>149
>フォーカスを失っても青のままにしたい

subclass化して WM_KILLFOCUS をブロック

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

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

842:デフォルトの名無しさん
08/06/04 04:03:42
>>841
GDIはそういう心配する必要なし

843:841
08/06/04 04:29:13
>>842
これで心置きなく転送できます。
ありがとうございました。

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

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

つかAPI関係ないだろ

846:デフォルトの名無しさん
08/06/04 16:36:52
よくわからんけどいいよ

847:デフォルトの名無しさん
08/06/04 16:44:40
タブエディタが何か分からない

848:デフォルトの名無しさん
08/06/04 16:46:36
>>847
しね

849:デフォルトの名無しさん
08/06/04 16:49:52
タブ譜のエディタですね、分かります

850:デフォルトの名無しさん
08/06/04 16:55:55
つまんね

851:デフォルトの名無しさん
08/06/04 16:58:40
訳:かまってほしいな

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

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

853:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/04 20:57:59
>>852
メモリの使用量なんて作ってみたらわかることだ。
初心者なら、作る前に答えを欲しがらずに、作って考えることだ。

855:デフォルトの名無しさん
08/06/04 22:03:32
>>854
偉そうに上級者面するな

856:デフォルトの名無しさん
08/06/04 22:12:23
そいつゲイツだぞ

857:デフォルトの名無しさん
08/06/04 22:39:06
だから?

858:デフォルトの名無しさん
08/06/04 22:41:49
お布施しろ

859:デフォルトの名無しさん
08/06/04 23:20:18
どうやって?
PayPalで送金するのか?w

860:デフォルトの名無しさん
08/06/05 00:11:05
とりあえず、VistaのUltimateを10本ほど。

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

862:デフォルトの名無しさん
08/06/05 02:25:19
>>860
Vistaなんてイラネーヨ

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

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

864:いのぶー
08/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:デフォルトの名無しさん
08/06/05 23:03:24
>>864
PostMessageでDOWNした後UPする前にスリープを入れる

866:いのぶー
08/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:デフォルトの名無しさん
08/06/05 23:53:40
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

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

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

869:いのぶー
08/06/06 00:01:48
一応、ペイントはアクティブになってくれています。

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

URLリンク(www.atmarkit.co.jp)


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

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

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

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

873:いのぶー
08/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:デフォルトの名無しさん
08/06/06 06:26:02
ふつーSendInputとか使う。

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

876:853
08/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
08/06/06 08:11:01
解決しました.

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

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


878:デフォルトの名無しさん
08/06/06 14:45:22
(WORD)0

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

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

880:デフォルトの名無しさん
08/06/06 15:38:14
すいません

881:デフォルトの名無しさん
08/06/06 15:41:37
どんまい

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

883:デフォルトの名無しさん
08/06/06 16:17:57
吸わないよ


884:デフォルトの名無しさん
08/06/06 16:23:21
(WORD)0

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

885:デフォルトの名無しさん
08/06/06 16:25:28
break;

886:デフォルトの名無しさん
08/06/06 16:59:07
訳:かまってほしいな

887:いのぶー
08/06/06 22:01:53
皆様、ありがとうございます。

sendInputというキーワードのおかげで、下記のページを見つけることができました。
URLリンク(homepage3.nifty.com)

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


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

889:いのぶー
08/06/06 23:31:46
888さん、ありがとうございます。(ゾロ目ですね・・・)

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

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

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

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


892:いのぶー
08/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:いのぶー
08/06/07 00:46:46
追伸、

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

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


894:デフォルトの名無しさん
08/06/07 02:01:28
いい加減うざいです><
Win32スレなのか.NETスレなのか分かりません><

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

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

897:デフォルトの名無しさん
08/06/07 03:45:01
windowsスレッドって何だよ
windows板なら分かるが

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

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

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

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

901:いのぶー
08/06/07 06:56:28
> 898

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

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

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

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

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


905:デフォルトの名無しさん
08/06/07 14:27:01
はぁ?

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


907:デフォルトの名無しさん
08/06/07 14:47:12
はぁ?

908:デフォルトの名無しさん
08/06/07 14:47:55
知らないならレスしないでください

909:904
08/06/07 14:50:36
908は私の発言じゃないですよ。

わかりにくいですか?

910:デフォルトの名無しさん
08/06/07 14:53:40
まったく分からない

911:デフォルトの名無しさん
08/06/07 14:54:30
初心者スレ池

912:デフォルトの名無しさん
08/06/07 14:55:06
910は私の発言じゃないですよ。

わかりにくいですか?

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

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

914:デフォルトの名無しさん
08/06/07 15:12:18
お前は何を言ってるんだ

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

具体的に言うと、下のページの mxdrv.dll が該当します。
URLリンク(gorry.haun.org)

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

916:デフォルトの名無しさん
08/06/07 15:27:25
>>913
レスありがと。

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


917:916
08/06/07 15:38:46

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

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

919:デフォルトの名無しさん
08/06/07 16:28:20

質問です。

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


920:デフォルトの名無しさん
08/06/07 16:29:48
フックふっくにしてやんよ

921:デフォルトの名無しさん
08/06/07 16:37:46
IsWindowEnabledでいいんじゃね

922:デフォルトの名無しさん
08/06/07 17:07:40
>>918
Imm~関数群などを使う。

923:デフォルトの名無しさん
08/06/07 17:16:07
IMMの次はTSFだぜ

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

???

925:デフォルトの名無しさん
08/06/07 18:38:05
ストリートファイターズ……

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

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

928:デフォルトの名無しさん
08/06/07 19:33:05
GetCurrentThread
GetCurrentThreadId

929:デフォルトの名無しさん
08/06/07 19:33:19
IDってどういう意味だ?

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

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

930:デフォルトの名無しさん
08/06/07 19:37:06
>>927
GetCurrentThread


931:918
08/06/07 19:44:58
>>922,923
感謝する。
とりあえず今回はTSFの方向で考えてみようと思う。

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

933:931
08/06/07 20:05:29
>>932
TextServicesFlameworkですよ(汗
...とマジレスしてみる。

934:デフォルトの名無しさん
08/06/07 20:08:52
>>928-930あざーした

935:デフォルトの名無しさん
08/06/07 20:31:21
>>933
Text Services Frameworkですよとマジレス

936:デフォルトの名無しさん
08/06/07 20:37:32
Flamework
燃える仕事か。

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

938:933
08/06/07 20:46:31
>>935,936
わざとだ。
ということにしておいてくれ。

939:デフォルトの名無しさん
08/06/07 20:55:32
>>936
仕事熱心でいいじゃないか

940:デフォルトの名無しさん
08/06/07 21:01:53
炎上しているって事はデスマーチなんだろ

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

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

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

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

942:デフォルトの名無しさん
08/06/07 21:14:46
ThreadEntry(PVOID param)
{
 CMyClass hoge;
 kansuu();
}

kansuu()
{
 _enthreadex(0);
}

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

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

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

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

946:918
08/06/07 21:27:22
なんかコピペされてる?
何事ですか?

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

948:デフォルトの名無しさん
08/06/07 22:10:57
MSDNのYieldのところに

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

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

949:デフォルトの名無しさん
08/06/07 22:20:17
ウィンドウを作ったスレッドがなんでyieldなんかするんだよ

950:デフォルトの名無しさん
08/06/07 22:31:29
知らないならレスしないでください

951:デフォルトの名無しさん
08/06/07 22:57:14
糞スレ終了

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

953:デフォルトの名無しさん
08/06/08 00:42:09
質問したいんですけどいいですか?

954:デフォルトの名無しさん
08/06/08 00:44:29
ものによる。まずは質問して。

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

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

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

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

959:デフォルトの名無しさん
08/06/08 09:05:59
イベントログ

960:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/06/08 11:00:37
親切な人だなぁ・・
質問者じゃないけど、感心した

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

963:デフォルトの名無しさん
08/06/08 15:22:53
そんな面倒な事わざわざしないお

964:デフォルトの名無しさん
08/06/08 18:23:10
IDがあればそんな面倒な事しなくもいいのにね

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

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

966:デフォルトの名無しさん
08/06/08 19:07:58
またID厨か

967:965
08/06/08 19:15:42
もひとつ問題が

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

968:デフォルトの名無しさん
08/06/08 19:46:30
>>966
独り言消えろ

969:デフォルトの名無しさん
08/06/08 19:48:08
またまたID厨か

970:デフォルトの名無しさん
08/06/08 19:53:08
ID厨ウゼェ

971:デフォルトの名無しさん
08/06/08 19:57:41
↑キモッ

972:デフォルトの名無しさん
08/06/08 19:58:33
ID厨の特徴

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

973:デフォルトの名無しさん
08/06/08 20:08:59
やっぱID欲しいな

974:デフォルトの名無しさん
08/06/08 20:09:32
IDがあればなぁ

975:デフォルトの名無しさん
08/06/08 20:29:07
俺の予想では荒らしてるのは一人か二人

976:デフォルトの名無しさん
08/06/08 20:29:14
かまってほしいな

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

978:デフォルトの名無しさん
08/06/08 20:30:32
× なのか
○ なのは


979:デフォルトの名無しさん
08/06/08 20:32:58
りりかる

980:デフォルトの名無しさん
08/06/08 20:54:18
/* ここまで俺の自演 */

981:デフォルトの名無しさん
08/06/08 21:05:34
/* かまってほしいな */

982:デフォルトの名無しさん
08/06/08 21:10:01
/*
コメント
/*/
スイッチ
//*/

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

984:デフォルトの名無しさん
08/06/08 21:24:40
チィッ…右手よ、静まれ!

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

986:デフォルトの名無しさん
08/06/08 21:40:04
必要ないから

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

988:デフォルトの名無しさん
08/06/08 21:52:30
この程度で荒れてるって・・・

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

990:デフォルトの名無しさん
08/06/08 22:06:49
それに加担してる事は自覚してるのかね


991:デフォルトの名無しさん
08/06/08 22:11:40
自覚してないけど、何か?

992:デフォルトの名無しさん
08/06/08 22:12:33
次スレ建ってないんだから減速しろ

993:デフォルトの名無しさん
08/06/08 22:18:11
建ててくるわ。


Win32API質問箱 Build67

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

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

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

- Win32API質問箱 wiki
URLリンク(wiki.livedoor.jp)

Win32API質問箱 Build66
スレリンク(tech板)

994:デフォルトの名無しさん
08/06/08 22:27:48
次スレたててきた
スレリンク(tech板)


995:デフォルトの名無しさん
08/06/08 22:40:15
ume

996:デフォルトの名無しさん
08/06/08 22:40:35
うめ

997:デフォルトの名無しさん
08/06/08 22:41:11
産め

998:デフォルトの名無しさん
08/06/08 22:42:18
埋め

999:デフォルトの名無しさん
08/06/08 22:43:16
おめ

1000:デフォルトの名無しさん
08/06/08 22:43:25


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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch