■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build43
751 名前:デフォルトの名無しさん :2006/06/17(土) 14:05:13
>>750
accept
recv
まで書いて実行してみたところ、固まって
んで、接続もされてないのにrecvループしてるのが原因なのかと勘違いして
とりあえず答え求めてgoogle検索して出てきたソースで試してみたところ、やっぱし固まって・・・
(シングルスレッドでやってるソースしか出てきてなかったわけじゃないと思いますが、コードの一部だけをコピペして試してたので)

僕の知識では全然acceptに気づかなくて、どうしようもなく行き詰ってたんです
僕の間抜けさ故に不快にさせてしまって申し訳ないです

#追伸
こうして行き詰った理由を文章に書いたことで僕の間違いを再確認できました、
おかげで少しだけ成長できた気がします。ありがとうございました

752 名前:デフォルトの名無しさん :2006/06/17(土) 17:09:29
こっちはいい迷惑でした。
今後は

マルチスレッドプログラミング相談室 その4
http://pc8.2ch.net/test/read.cgi/tech/1130984585/
ネットワークプログラミング相談室 Port17
http://pc8.2ch.net/test/read.cgi/tech/1148944560/

こちらで質問してください。
2度とこないでください。

753 名前:デフォルトの名無しさん :2006/06/17(土) 17:15:14
ごめんなさい。でも、APIの質問ができたら来てもいいですか?

754 名前:デフォルトの名無しさん :2006/06/17(土) 17:16:35
どうぞいらっしゃい。

755 名前:デフォルトの名無しさん :2006/06/17(土) 19:34:56
パレットのプログラミング、というものを学習中です。
同時発色可能な色数が発色可能な色数より少ない場合に必要なのだ、という事はわかりました。
256色モードだけで必要、と書いてはありますが、しかし、余りに面倒な気がします・・・
こんなプログラミングをどのアプリもやっているのだろうか?
適当に色合わせをしてくれるライブラリとかはないのでしょうか?

756 名前:デフォルトの名無しさん :2006/06/17(土) 19:38:32
なんでいまさらパレット?
WinXPは互換モード以外256色なんて使えねーよ?

757 名前:デフォルトの名無しさん :2006/06/17(土) 19:39:43
>>755
特に今必要じゃなかったらあとで必要になった時にまたやればいい。

758 名前:デフォルトの名無しさん :2006/06/17(土) 19:52:51
gif png アイコンなんかを直接いじりたい場合とかか

759 名前:デフォルトの名無しさん :2006/06/17(土) 20:03:15
VC6でDLLを作って、VB6で使用しています
で、クラスを登録したいんですが、DEFファイルはどう書いたら良いんでしょうか?
関数と同じではダメなようなのですが・・・VBで使うので、

class __declspec( dllimport ) ClassName

は使えないみたいです。ご教示よろしくお願いします。

760 名前:デフォルトの名無しさん :2006/06/17(土) 20:05:34
>>755
パレットを使うと、(文字通り)色を調整するのが楽だという理由でパレットカラーの画像フォーマットを採用する場合もある。
#得に典型的な画像フォーマットはxpm。こいつはテキストでもありCソースの一部としても使える。
いずれにしても、このスレ的には忘れていい。
#逆に言えば、これ以上の話はスレ違い。

761 名前:デフォルトの名無しさん :2006/06/17(土) 20:06:35
DEFファイルなんか必要なのか?
俺なんか一度も使ったこと無いけど。

762 名前:デフォルトの名無しさん :2006/06/17(土) 20:28:17
>>755
Delphi Graphic Secretsでも読めよ。もう廃刊になってるかもしれんけど
いい本だよ。

763 名前:デフォルトの名無しさん :2006/06/17(土) 20:29:20
Del厨はDelスレから出てくんな

764 名前:デフォルトの名無しさん :2006/06/17(土) 20:29:39
エディットコントロールの外枠から最初の文字が表示される
隙間の幅を指定できますか?

765 名前:デフォルトの名無しさん :2006/06/17(土) 20:31:39
>>764
EM_SETMARGIN

766 名前:デフォルトの名無しさん :2006/06/17(土) 20:43:36
>>759
VBからクラスの形で使いたければActiveXでないといけない。

767 名前:デフォルトの名無しさん :2006/06/17(土) 20:54:07
>>764
できました!ありがとうございます

768 名前:764 :2006/06/17(土) 20:57:11
間違いましたorz
>>765
ありがとうございます

769 名前:デフォルトの名無しさん :2006/06/17(土) 21:00:15
>>766
そうなんですか、関数でラッピングする方向で考えてみます
ありがとうございました

770 名前:デフォルトの名無しさん :2006/06/17(土) 21:29:57
半透明のポップアップメニューを作りたいのですが、どうやれば作れるのでしょうか?

771 名前:デフォルトの名無しさん :2006/06/17(土) 22:38:17
ポップアップメニューを半透明にすればいいよ

SetWindowAttributeLayeredなんちゃら



772 名前:デフォルトの名無しさん :2006/06/17(土) 22:40:56
http://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.asp

773 名前:デフォルトの名無しさん :2006/06/17(土) 23:34:06
スレッドの終了待ちってどこですればいいですか?
// STOPボタンが押された時
HANDLE handle = Thread->GetHandle();
Thread->Stop();
WaitThread( handle, INFINITE );//WaitForSingleObjectのラップ
CloseHandle( handle );
なんてコードをGUIスレッド側で書いてるのですが、
たまにスレッドの終了に時間がかかってGUIが固まってしまうときがあります。当たり前ですが。
なので、どのようにスレッドの終了を待って、クローズすればいいのか
教えてください。

というか、一々WaitForSingleObjectで待ってなくて、CloseHandleで閉じても
いいのでしょうか?

774 名前:デフォルトの名無しさん :2006/06/17(土) 23:46:35
>>773
スレッドの終了処理を必要としないならばTerminateThreadとかで強制終了しても構わない。

メモリ解放とか終了処理があるのならば、普通はスレッドのクラスに「割り込みフラグ」を持たせておいて、
スレッドの処理内部で常にその「割り込みフラグ」がtrueに設定されたか監視するようコードを書き、
スレッドを生成した側で「割り込みフラグ」にtrueを設定して終了を通知する。

まあJavaのThreadの仕組みなんだけど参考にするといいと思う。


775 名前:デフォルトの名無しさん :2006/06/17(土) 23:47:45
スレッドハンドルを使う必要が無ければ、作成直後に閉じてもいいし、スレッド側で閉じてもいい。
後者はMFCでも行われている。

776 名前:デフォルトの名無しさん :2006/06/17(土) 23:57:33
>>774
スレッドの終了処理を必要としないならばTerminateThreadとかで強制終了しても構わない。

Cのランタイムライブラリを一切使わないおつもりでしょうか?

777 名前:デフォルトの名無しさん :2006/06/18(日) 00:06:53
>>773
待つなら、MsgWaitFor〜の待機関数かタイマ。
タイマは使えない場合も有り

778 名前:デフォルトの名無しさん :2006/06/18(日) 00:12:47
ひとつ聞いておきたいんだ。
>>775でも言っているけど、
あるスレッドハンドルに対してCloseHandleすると、
そのスレッドまで終了すると信じていたのは自分だけじゃないよな?

いや、Advanced Windowsにも書かれていたから、結構な人がそう信じているんだろうけど。


779 名前:774 :2006/06/18(日) 00:18:39
>>776
あらっ、なんかやっぱりスレッドの強制終了ってヤバカッたの?
そこら辺までは詳しく知らなかったです。

スレッド処理で、終了時に外部ファイルなどに状態を保存しておかないと、
次の起動時に不都合がでるようなアプリ以外では、
普通にスレッドの強制終了してもよいかとオモテました。

780 名前:デフォルトの名無しさん :2006/06/18(日) 00:46:44
>>779
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/terminatethread.asp
>If the target thread owns a critical section, the critical section will not be released.
>If the target thread is allocating memory from the heap, the heap lock will not be released.
>If the target thread is executing certain kernel32 calls when it is terminated, the kernel32 state for the thread's process could be inconsistent.
>If the target thread is manipulating the global state of a shared DLL, the state of the DLL could be destroyed, affecting other users of the DLL.

相当危険だな。

781 名前:デフォルトの名無しさん :2006/06/18(日) 01:25:03
返信ありがおうございます
スレッドが実行中でも、ハンドルを使わなければ閉じて構わないんですね。
この方法使います。

782 名前:デフォルトの名無しさん :2006/06/18(日) 01:28:20
TerminateThreadは原則禁止と思っておいた方がいい
質問の答えとしては>>777かな

783 名前:デフォルトの名無しさん :2006/06/18(日) 03:31:20
Win32APIで作られてるソフトでオープンソースなものしってる限り教えて頂けないでしょうか
参考にしたいです

784 名前:デフォルトの名無しさん :2006/06/18(日) 03:47:45
>>783
【参考】ソースを公開しているWindowsプログラム
http://pc8.2ch.net/test/read.cgi/tech/1115206132/

785 名前:デフォルトの名無しさん :2006/06/18(日) 10:54:41
>>783
Windowsアプリのプログラム経験ないならSDKのgeneric.c

786 名前:デフォルトの名無しさん :2006/06/18(日) 23:21:23
自分で作ったビットマップをTBSTYLE_TRANSPARENTとTBSTYLE_FLATスタイルを持たせた
ツールバーのボタンに設定するとき、どのようにしてビットマップの背景を透過させるとよいでしょうか。

787 名前:デフォルトの名無しさん :2006/06/19(月) 15:18:35
>>786
適当な透過色を設定したImageListを用いて、TB_SETIMAGELISTで
ボタンイメージを設定する。

788 名前:デフォルトの名無しさん :2006/06/19(月) 16:59:58
うまくいきました。ありがとうございました!

789 名前:デフォルトの名無しさん :2006/06/19(月) 17:17:31
 ダイアログ上に設置したリストビューコントロールについてどうしても解決できないのですが
 VC++2003.netにてWin32プロジェクトを作成し、ダイアログボックスを設置、そのダイアログボックス上にリストビューコントロールの
Viewをレポート、Edit labelsをtrueにして配置しウィンドウを作成、リストビューにアイテムを適当に挿入してアイテムの内容を編集
しようとして文字を追加入力、又は消去した瞬間にダイアログボックスが落ちてしまいます。ちなみにアプリは無事で、エラーは出ません
たまにアサートが出ますがどうやらメッセージ処理関数内で何かが起こっている模様です
 上記の行為を通常のウィンドウ上に作成したリストビューコントロールで行っても特に問題はありません
 また、WTLを使用して行った場合も同じ状況になります
 ただし、MFCを使用した場合だとウィンドウ、ダイアログ上ともに問題なくラベル編集できます

 現状でMFCを使用しない状態でダイアログボックス上のリストビューコントロールのアイテムのラベル編集は出来ないのでしょうか?

790 名前:789 :2006/06/19(月) 17:28:15
 すいません、たまに出るのはアサートではなくて例外エラーでした

791 名前:デフォルトの名無しさん :2006/06/19(月) 18:40:39
できないわけがない

792 名前:デフォルトの名無しさん :2006/06/19(月) 23:17:39
ヌルポじゃないの

793 名前:デフォルトの名無しさん :2006/06/19(月) 23:20:19
 ↓

794 名前:デフォルトの名無しさん :2006/06/19(月) 23:32:36
 │↑
 └┘

795 名前:デフォルトの名無しさん :2006/06/19(月) 23:34:58
>どうやらメッセージ処理関数内で何かが起こっている模様です
そこまで分かってるならステップ実行でもして何処でなにが起こってるのか調べれ

796 名前:デフォルトの名無しさん :2006/06/20(火) 00:09:12
初心者はデバッグしないから困る

797 名前:デフォルトの名無しさん :2006/06/20(火) 00:10:28
知識もなしにはじめるから、デバックのやり方とか、それ自体知らない人もいそうな悪寒。
そのうち分かってくるからいいんだけどね

798 名前:デフォルトの名無しさん :2006/06/20(火) 00:27:43
逆にコードをちょっと見直せばわかるバグを
一生懸命ステップ実行してハマる奴もいるからなぁ

799 名前:789 :2006/06/20(火) 02:23:32
>795
 ステップ実行というか、エラーが出ているのが自作関数とかではなくモジュール内なので、アセンブラになってしまうんですよ
 ダイアログプロシージャーを抜けた先だかで例外で落ちてるらしく
 NULLでのメモリアクセスエラーにしても、何がNULLなのやら……

 やってることと言えば、もう、ただ新規でプロジェクト作成してダイアログ作成前にInitCommonControlsやってWM_INITDIALOG内でカラムとアイテムを挿入してるだけなんですけどね……
 あ〜、ちゃんとcommutil.hインクルードしてcomctl32.libリンクしてます
 もう、ほんと、何で駄目なんだろう……

800 名前:デフォルトの名無しさん :2006/06/20(火) 02:37:27
>>798
まあ、それは知ってるのにできないから、訓練不足でしょ。
おれが言いたいのは、知らないとどうしようもないってこと。

801 名前:仕様書無しさん :2006/06/20(火) 04:10:47
プログラムを実行したユーザーにアクセス権が設定されていないファイル
に対して、プログラム中でファイルの所有権を一時的に取得して、ファイル
アクセスした後、所有権を解除(元に戻す)したいんですが、とっかかりが
なくて困ってます。SECURITY_ATTRIBUTE構造体あたりが関与してそうな気も
しますが、どのAPIを使ったらいいんでしょうか?ググってもいまひとつ、
ヒットしなくて。

プログラムを実行したユーザーは、Administrator等、所有権を変更する
権限がある状態と仮定します。プログラムを実行したユーザーに、ファイル
の所有権を変更する権限があるかどうか調べるAPIってのはあります?

802 名前:デフォルトの名無しさん :2006/06/20(火) 06:59:10
AdjustTokenPrivilegesでいいんでね?

803 名前:デフォルトの名無しさん :2006/06/20(火) 12:31:39
>>799
エラーが出てるという関数の引数はチェックしたよね?

804 名前:798 :2006/06/20(火) 13:37:17
>803

 エラーが出てるという関数自体はDialogBoxなんですよ、設定しているDialogProc関数の処理はWM_INITDIALOG以外のメッセージは全部FALSE返すようにしていて、初期化処理の中身はリストビューコントロールへのアイテムとカラム追加処理のみです……
 それ以外はプロジェクト作成時からいじっていないんです……あ、InitCommonControlsは入れましたが

 ちなみにカラムの追加は
HWND hWndList = ::GetDlgItem(hDlg, IDC_LIST);
LVCOLUMNLvCol;
::memset(&LvCol, 0, sizeof(LVCOLUMN));
LvCol.mask = LVCF_TEXT | LVCF_FMT;
LvCol.pszText = _T("名前");
LvCol.fmt = LVCFMT_LEFT;
::SendMessage(hWndList, LVM_INSERTCOLUMN, 0, reinterpret_cast<LPARAM>(&LvCol));
 という処理で、アイテムの追加は
LVITEM LvItem;
::memset(&LvItem, 0, sizeof(LVITEM));
LvItem.mask = LVIF_TEXT;
LvItem.iItem = 0;
LvItem.iSubItem = 0;
LvItem.pszText = _T("てすと");
LvItem.state = 0;
LvItem.stateMask = 0;
LvItem.iImage = 0;
LvItem.lParam = 0;
::SendMessage(hWndList, LVM_INSERTITEM, 0L, reinterpret_cast<LPARAM>(&LvItem));
 という処理で行ってます……何がいけないんだ

 ちなみにWTL使用してる方ではリストビューコントロールをサブクラス化してリストビューのメッセージ処理にREFLECT_NOTIFICATIONSを加えたら動きましたorz

805 名前:801 :2006/06/20(火) 14:27:40
>802
即レスどうもです。どうやら、そのようですね。ありがとうございました。

806 名前:デフォルトの名無しさん :2006/06/20(火) 15:16:52
>>804
拾ったwin32のサンプルでラベル編集してみたけど特に問題なく動いたよ

807 名前:798 :2006/06/20(火) 16:33:54
>806

 わざわざありがとうございます
 あうぅ、何がいけないんだろう
 ……あ、何処で拾ったか教えていただけますか? ソース見てみたいです

808 名前:デフォルトの名無しさん :2006/06/20(火) 21:07:37
netshコマンドがやっているようにWMIやnetshを間接的に使用せずに
DHCPをEnableに設定するWin32APIをご存知ありませんでしょうか?
PlatformSDKのIPHelperAPIを探しても
renew/releaseなどしか見つかりませんでした。



809 名前:デフォルトの名無しさん :2006/06/21(水) 01:46:18
WindowsPCが、今インターネットに繋がっているかどうかを、
Win32APIなど使って、確認するには、どういう手段を使えば良いでしょうか?

・NICが装着されてる
・IPアドレスが割り当てられてる
の確認くらいは思いつくけど、その先が...

強引にパケット出して、自動ダイアルアップ環境にあるPCで、
ダイアルアップをさせることは避けたい。
というのがあるので、何か良い方法ないですかね。

できれば、ダイアルアップ・ルータの自動接続もさせたくないです。

で、インターネットに繋がっているときだけ、ちょちょっとデータ転送したい。





810 名前:デフォルトの名無しさん :2006/06/21(水) 02:21:41
転送先につなげてみりゃいいじゃん。
あるいはping打ってみるとか。

811 名前:デフォルトの名無しさん :2006/06/21(水) 02:34:56
>>809
・グローバルIPが振られていたらインターネットに
 つながっっていると見なす
・ルータとお話するには
 ・UPnP
 ・機種限定で汚い方法でいいなら設定画面解析など
 ・ルーティングプロトコルで話をする
ごめん、よくわからねえ。

812 名前:デフォルトの名無しさん :2006/06/21(水) 02:43:05
>>810

ping 打ったらダイアルされてしまいますが?


813 名前:デフォルトの名無しさん :2006/06/21(水) 02:51:03
「ルータに接続されているが、インターネットには接続されていない」
という状況はPCからは確認のしようがない。
ルータの管轄だからな。
つまり>>810が一番確実な手段。

814 名前:デフォルトの名無しさん :2006/06/21(水) 03:05:16

>強引にパケット出して、自動ダイアルアップ環境にあるPCで、
>ダイアルアップをさせることは避けたい。
>というのがあるので、何か良い方法ないですかね。

>できれば、ダイアルアップ・ルータの自動接続もさせたくないです。

こんな制限付けたら調べようがないと思うけどなんで?
電話代の問題?


>で、インターネットに繋がっているときだけ、ちょちょっとデータ転送したい。

スパイウェアでも作るつもりですか?



815 名前:809 :2006/06/21(水) 05:27:55
アップデートのお知らせをソフトを起動してるときに自動的に
できるようにしようかと思って。

でも、そのためにダイアルアップ環境で使ってるような場合に、
インターネットに繋いでしまうようなことまではやりたくない。

という事なんだけど、考え出すと、なかなか妙案が浮かばなくて。

例えば、IEなと他のソフトが、今インターネットアクセスしてるかどうか
調べるような方法があるかとか。

確実に常時接続環境だということが判別できる方法はないかとか。


816 名前:デフォルトの名無しさん :2006/06/21(水) 05:38:06
InternetGetConnectedStateは?

817 名前:デフォルトの名無しさん :2006/06/21(水) 06:04:16
常識的なソフトなら
自動チェックする、しないをユーザーが選択できる。

818 名前:デフォルトの名無しさん :2006/06/21(水) 08:43:49
>>817でFAな希ガス
ユーザが自動チェックすることを選んだなら、
ダイアルアップ使っても問題なさそうだし

819 名前:デフォルトの名無しさん :2006/06/21(水) 11:49:23
質問があります。
モードレスダイアログを作ってそこで別スレッドで長い処理をやらせて内容を表示させています。
処理が終わる前に先に進まれると困るので本体でWaitForSingleObjectで
スレッドが無くなるまで待つようにするとフリーズしてしまいます。
どうやら原因はWaitForSingleObjectで止めるとモードレスまで止まってしまうのでスレッドの内容が
モードレスに反映されないみたいなんだけど、モードレスだけ動かすことはできませんか?

820 名前:デフォルトの名無しさん :2006/06/21(水) 12:07:20
処理終わるまでWaitForSingleObjectで待つって、スレッド作った意味無いじゃん。

821 名前:デフォルトの名無しさん :2006/06/21(水) 12:11:16
処理が終わってないなら進ませなければ良いだけの話だろ!

822 名前:デフォルトの名無しさん :2006/06/21(水) 12:15:50
処理が終わる前に先に進まれると困る方を別スレッドにすべきだったな

823 名前:デフォルトの名無しさん :2006/06/21(水) 12:29:00
>>819
スレッドの処理が終わったら、スレッドからメッセージを投げればいい。

824 名前:798 :2006/06/21(水) 12:47:04
http://www.dotup.org/uploda/www.dotup.org2539.zip.html

 上記ソースに間違いが無いと思うんですけど……
 何故落ちるのか意味が本当に分かりません。あぅぅ


825 名前:デフォルトの名無しさん :2006/06/21(水) 12:50:48
>>824
まず何所で落ちるのか調べろ。話はそれからだ。

826 名前:デフォルトの名無しさん :2006/06/21(水) 12:51:45
>>824=>>804=>>789?
> LvItem.pszText = _T("てすと");

これ、リテラル止めてみたら?

827 名前:デフォルトの名無しさん :2006/06/21(水) 12:55:53
>>824
試しにコンパイルしてみたが別に落ちないぞ?

828 名前:デフォルトの名無しさん :2006/06/21(水) 18:38:26
ウィンドウのCaptionを調べる事はできるのでしょうか?
FindWindowに渡すための第二引数を取得したいのですがいい方法が見付かりません。
よろしくお願いします。


829 名前:デフォルトの名無しさん :2006/06/21(水) 18:43:06
GetWindowText
これくらい自分で調べろバカ

830 名前:デフォルトの名無しさん :2006/06/21(水) 18:44:20
>>828
FindWindowsはウィンドウクラス名分かってる場合はウィンドウキャプション省略できるぞ。一応。

831 名前:828 :2006/06/21(水) 18:47:17
>>829
バカで申し訳ない。でもおかげ様で思った通りにできそうです。ありがとうございました。
>>830
クラス名はわかっているのですがありがちな名前すぎて話にならないのです。

832 名前:デフォルトの名無しさん :2006/06/21(水) 18:47:59
>>829
FindWindow に渡すための ウインドウ Caption を調べるために GetWindowText を利用する
なんか矛盾しているようないないような
# GetWindowText できてるなら FindWindow する必要がないようにも見えるが・・・

>>828
FindWindow( class_name_string, NULL) じゃだめなのか?

833 名前:828 :2006/06/21(水) 18:53:06
なんてこった。GetWindowTextってWindowHandleいるんですねorz

834 名前:デフォルトの名無しさん :2006/06/21(水) 18:53:47
>>789のやつだがWM_COMMANDの所にブレイクポイント設定してデバッグしてみると
ラベル編集のときにwParam=0x01000000がくるときがあるが、
wParamのLOWORDが0になるときってどんなときか知ってる?

835 名前:デフォルトの名無しさん :2006/06/21(水) 18:54:31
>>833
どうやってウィンドウを特定するつもりだったんだw

836 名前:デフォルトの名無しさん :2006/06/21(水) 18:54:48
>>831
そこまで探しにくいのならEnumWindowsで調べた方が早いと思う。
実行ファイル名が分かってるならProcess32First/Next回してプロセスID取得>EnumWindowsで帰ってくるハンドルをGetWindowThreadProcessIdに突っ込んでターゲットのプロセスIDと比較とか。



837 名前:828 :2006/06/21(水) 18:57:54
>>835
そうですよね。対象がないですよね('A`)
>>836
なんかよくわからない横文字がたくさん並んでいるみたいですが調べてみます。
ありがとうございました。


838 名前:デフォルトの名無しさん :2006/06/21(水) 21:57:30
>>789のやつ、ラベル編集するときにListViewが作るエディットコントロールのIDが0で
それがNotifyコード送ってきてた。
さらにラベル編集時にListViewが作ったであろうIDが1のコントロールから
Notifyが送られてくるから、IDOKの処理が行われてしまう。
だからボタンのIDにIDOKを使わなければダイアログは終了しない。

839 名前:デフォルトの名無しさん :2006/06/22(木) 10:42:47
Microsoft Word上でコピーを行い、そのときのクリップボードの内容をメモリとかファイルに保存して、後でその内容をクリップボードに復元したいんですが、どうしたらいいですか?
テキスト以外にもオブジェクトとかも含まれてるんで困ってます。

840 名前:デフォルトの名無しさん :2006/06/22(木) 11:04:16
フォーマットを識別して個別対応するしかないんじゃないかな。

841 名前:789 :2006/06/22(木) 11:10:52
>834
>838
 うわっ、うわっ、うわっ、動きましたっ
 ありがとうございます

 うう、Windowsアプリのデバッグ(メッセージ関係)はブレークポイントの掛け処が難しいです……
 もっと精進しまする〜

842 名前:デフォルトの名無しさん :2006/06/22(木) 11:45:11
>>840
ありがとうございます。
これから各フォーマットについて調べてみます。

843 名前:デフォルトの名無しさん :2006/06/22(木) 21:27:48
>>839
WordなんかはOLE使っているからOleGetClipboard()で
IDataObjectへのポインタを得ればどんな形式でも平気だと思う。

ところでシェルスクラップオブジェクト(拡張子shs)は、IDataObjectをファイル化したものだと俺は思っているんだ。
つまり何らかの方法でIDataObjectをシェルスクラップとして書き出す方法があるに違いないと思っている。

そうしたら(OLE対応のデータなら)どんな形式でも書き出せるようにできるはずだと思う。

844 名前:デフォルトの名無しさん :2006/06/23(金) 10:15:23
今までのスレの質問と質問者が納得した答えをブログに
まとめたいのですが構わないでしょうか?




845 名前:デフォルトの名無しさん :2006/06/23(金) 10:45:20
>>844
是非お願いします

846 名前:デフォルトの名無しさん :2006/06/23(金) 12:18:44
>>844
わんわわわん わん!
(もちろん、アリフェイトで小銭をかせいじゃだめだよ)

847 名前:デフォルトの名無しさん :2006/06/23(金) 12:20:02
>>846わん。わわん。
>>846は間違い。アフィリエイトね)

848 名前:デフォルトの名無しさん :2006/06/23(金) 12:32:29
独自プロトコル(UDP/IPおよびTCP/IP)でデータ通信するWinsock2を使ったアプリケーションを書いていますが、
WinXP SP2でbind()したときにセキュリティの警告ダイアログが表示されます。
このダイアログを、最初から出ないようにする方法はありませんか?
ご存知の方がいらっしゃいましたらご教示ください。

849 名前:デフォルトの名無しさん :2006/06/23(金) 12:37:32
>>848
ウィルスが勝手にポート開こうとしたときに警告でなかったら意味ないと思わないかね
少なくとも正攻法ではナイ

850 名前:デフォルトの名無しさん :2006/06/23(金) 12:39:07
だとはおもいましたが、アプリケーションがどっかで証明とか受ければ大丈夫とかないんでしょうかね。

851 名前:デフォルトの名無しさん :2006/06/23(金) 12:45:41
>>850
ない

852 名前:デフォルトの名無しさん :2006/06/23(金) 12:59:25
>>846
賢い奴はクリックしないのでは?



853 名前:848 :2006/06/23(金) 13:12:16
そうですか、ありがとうございました。

854 名前:852 :2006/06/23(金) 13:17:47
いや俺としてはそれを原動力にしてほしいがw


855 名前:デフォルトの名無しさん :2006/06/23(金) 13:37:17
プログラムでXPのFWの設定もやっちまえばいいだけ

856 名前:844 :2006/06/23(金) 13:52:49
再度、すみません
とりあえず作ってみたのですが
http://winapi.seesaa.net/

こんな感じでもかまいませんか?


857 名前:デフォルトの名無しさん :2006/06/23(金) 14:11:16
こいつぁクールだぜ

858 名前:デフォルトの名無しさん :2006/06/23(金) 14:24:37
( ゚д゚ )

859 名前:デフォルトの名無しさん :2006/06/23(金) 14:40:14
こっち見るな

860 名前:デフォルトの名無しさん :2006/06/23(金) 14:42:03
>>856
スレへのリンクもつけた方がいいんじゃない?

http://pc8.2ch.net/test/read.cgi/tech/1148005509/856
こんな感じでレス番までつけて。

http://pc8.2ch.net/test/read.cgi/tech/1148005509/856-860
質問から回答に至るまでに意義ある論議があったりすれば、この方がいいかも。


861 名前:844 :2006/06/23(金) 14:46:16
>>860
そうしてみます


862 名前:848 :2006/06/23(金) 14:46:22
>>855

なるほど、それはどの辺りの資料を探せばわかりますでしょうか?
ヒントをいただけるとうれしいです。


863 名前:デフォルトの名無しさん :2006/06/23(金) 15:18:27
>>860
HTML化されている時はどうするの?
http://pc.2ch.net/tech/kako/991/991576947.html#130-150

http://pc.2ch.net/test/read.cgi/tech/991576947/130-150
こんな感じでやるの?




864 名前:デフォルトの名無しさん :2006/06/23(金) 15:30:02
WriteFileで改行含んだ文字出力したら、改行が「↑」って文字になっちゃうんだけど
改行ってどうするんですか?

865 名前:デフォルトの名無しさん :2006/06/23(金) 15:32:01
http://pc.2ch.net/tech/kako/991/991576947.dat.gz
があるから >>844 にはそれをすべてHTML化してそれにリンクを
貼ればいいのでわ?

全部できたらアフィも(ry w



866 名前:デフォルトの名無しさん :2006/06/23(金) 15:39:20
>>864
WriteFileに改行なんて概念は無いよ。
何で表示してるか知らんが、その表示するアプリで改行されるようなデータ書き出せばいいよ。

867 名前:デフォルトの名無しさん :2006/06/23(金) 15:53:34
\r\n

868 名前:デフォルトの名無しさん :2006/06/23(金) 15:55:41
>>866
ありがとうございます!

869 名前:868 :2006/06/23(金) 15:58:27
>>867
それですね。普通のテキストエディタで表示できました。

870 名前:デフォルトの名無しさん :2006/06/23(金) 17:15:12
>>856
乙かれさん。

871 名前:デフォルトの名無しさん :2006/06/23(金) 21:12:17
エディットコントロールでなにも入力してない状態でスクロールバー
を表示するにはどうしたら良いんでしょうか

872 名前:デフォルトの名無しさん :2006/06/23(金) 21:41:07
WS_HSCROLL
WS_VSCROLL
ES_AUTOHSCROLL
ES_AUTOVSCROLL

873 名前:デフォルトの名無しさん :2006/06/23(金) 23:11:11
>>862
ttp://www.microsoft.com/japan/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx#ENHAE
> 1 つまたは複数のポートでリッスンするアプリケーションが管理者によってインストールされる際、
> ユーザーは、アプリケーションがファイアウォール内でポートを開くことを許可するかどうかを示す
> 必要があります。
この辺かな。

874 名前:デフォルトの名無しさん :2006/06/24(土) 00:29:13
CreateWindowでウィンドウを作った後に、CUIのコンソールスクリーンに
文字を表示させたいのですが、そういうことは可能なのでしょうか。

WORD wAttributes;
CONSOLE_SCREEN_BUFFER_INFO csbi;

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hStdout, &csbi);
wAttributes = FOREGROUND_GREEN;
SetConsoleTextAttribute(hStdout, wAttributes);
printf("wAttributes = %d\n", wAttributes);

↑こんな感じのコードを入れましたが、うまく動きませんでした。

875 名前:デフォルトの名無しさん :2006/06/24(土) 01:05:28
>>874
mainなどから始まるプログラムでなければ、
AllocConsoleを呼べばコンソールが現れる。
ただし、printfは無理だと思う。

逆にmainから始まるようにすればprintfも問題なく使える。

876 名前:デフォルトの名無しさん :2006/06/24(土) 01:13:12
>>874
editbin /SUBSYSTEM:CONSOLE xxxx.exe でいけた記憶があるな。

877 名前:848 :2006/06/24(土) 01:56:42
>> 873

どうもありがとうございます。
まだ詳しく参照していないのですが、管理者権限を持つユーザーが実行している条件下で
INetFwAuthorizedApplicationsを使用することにより、セキュリティの警告なしにポート
を空けて独自プロトコルを動作させることはできそうですね。
しかし、
「アプリケーションは、自分自身を INetFwAuthorizedApplications コレクションに追加
 する前に、ユーザーの同意を得る必要があります。」
とありますので、同意を得ずにポートをあけるのは問題があるでしょうね。

やりたいことは、アプリケーションが同一のセグメント上で複数動作するの
を抑えたいだけなので、できれば警告などは無いのが望ましいのです。
他の方法が無いか探って見ます。

しかし、トロイの木馬がこのインターフェースを使用してポートを空けることができてし
まうということなるのか、よく考えたらおそろしい・・・



878 名前:デフォルトの名無しさん :2006/06/24(土) 02:08:01
同意画面が出たら無理矢理OKボタン押すようにプログラムすればいい

879 名前:デフォルトの名無しさん :2006/06/24(土) 07:59:06
>>874
cのライブラリにもstdout設定する必要があると思うけどやった?

最近javaとかc#ばっかで何て関数かわすれた。

880 名前:デフォルトの名無しさん :2006/06/24(土) 11:09:42
SetWindowRgnでへんてこなwindowを作って遊んでます。

WS_POPUPなwindowを
case WM_NCHITTEST:return HTCAPTION;
見たいな感じで動かせるようになったのですが
上方向の画面外に移動させようとすると画面内に戻されてしまいます。

どうすればいいか教えてください。

881 名前:デフォルトの名無しさん :2006/06/24(土) 15:52:19
自分でRegister&Createしたウィンドウ内にActiveXコントロールを入れ込む方法はどうやるのでしょうか?

1. RegisterClass() / g_hWndMain = CreateWindow("MyClass")
2. CoCreateInstance(CLSID_..., IID_IOleObject, &pOleObject)
3. pOleObject->SetClientSite(...) : コントロールに親ウィンドウのハンドルg_hWndMainを取得する手段を提供。
4. pOleObject->QueryInterface(IID_IOleInPlaceObject, &pOleinPlaceObject)
5. pOleinPlaceObject->SetObjectRects(...) : コントロールに親ウインドウの矩形と自分(コントロール)に割り当てられた矩形を教える。

ここまででコントロールに窓を表示する為の情報は教えたと思うのですが、表示できません・・・OrZ

ちなみにWebBrowserコントロールだとここまでで窓(非表示)が生成されるので、この後に無理矢理

pOleObject->QueryInterface(IID_IOleWindow, &pOleWindow);
pOleWindow->GetWindow(&g_hWndWBC)
ShowWindow(g_hWndWBC, SW_SHOW);

すればコントロールらしき白い空白が表示されます。(MyClassの背景は暗くしておく)
でもこれだけではこのコントロールはまともに使えないみたい・・・

それに他のActiveXコントロール(VB5CCEで自作)ではなぜかpOleObject->EnumVerbs()しないと窓が生成されないし(でもサイズは0)、g_hWndMainの子ウィンドウにならない・・・

OLEスレはあるんですが、余りに効率が悪いのでSDKレベルでOLEをやっている人はあまり居ないみたいです。

882 名前:デフォルトの名無しさん :2006/06/24(土) 15:56:40
マルチスレッドで標準CライブラリーとSTLは使えますか?

883 名前:デフォルトの名無しさん :2006/06/24(土) 15:59:29
>>882
マニュアル調べてMTセーフかどうかいちいち確認しろ。

884 名前:デフォルトの名無しさん :2006/06/24(土) 17:09:02
>>881
Visual C++ならATL::CAxWindow使えばいいと思うよ。
そうでなければ、これが参考になると思うよ。(ただしこれも結局ATL使っている)
http://www.nitoyon.com/vc/tips/ie_component.htm

885 名前:デフォルトの名無しさん :2006/06/24(土) 18:28:57
>>875-876 どうもありがとうございます
もう少し色々やってみます
>>879 すみません。よくわからないです

886 名前:おか :2006/06/25(日) 00:19:00
OS:WindowsXP
OnQueryEndSessionでログオフ/電源を切る/再起動を判別する方法知ってる?、
Win2000ではレジストリで取得できたのに。

887 名前:デフォルトの名無しさん :2006/06/25(日) 08:17:35


回転させたいときはPlgBlt関数でOK?





888 名前:デフォルトの名無しさん :2006/06/25(日) 12:48:53
>>885
freopen("CONOUT$", "w", stdout);

889 名前:デフォルトの名無しさん :2006/06/25(日) 13:52:28
CreateProcessでコマンドプロンプトを起動させ、他のソフトのコマンドラインオプションを
入力する。方法は無いでしょうか?
CreateProcessである必要は無いのですが、EXEの起動はWinExecとこれくらいしか
知らないので、他にもあるならお願いします。

890 名前:デフォルトの名無しさん :2006/06/25(日) 13:58:29
ShellExec()

891 名前:デフォルトの名無しさん :2006/06/25(日) 15:21:44
>>889
cmd /c tar -cf hoge.tar hoge0.txt hoge1.txt


892 名前:874 :2006/06/25(日) 15:27:22
>>888
ありがとうございます。
無事printf関数で出力できるようになりました

893 名前:889 :2006/06/25(日) 15:43:51
>>890
>>891
ありがとうございました。いろいろやってみます。


894 名前:889 :2006/06/25(日) 16:06:12
再度すいません。
>>890
>>891
のおかげで出来るようにはなりました。
あつかましいですが、コマンドプロンプトにコマンドラインオプションを入力した
結果を表示って出来るのでしょうか?
例えば(ソフトによって違いますが)「○○処理は完了しました。」などを
CreateWindow("Edit"〜〜とかに反映させるとか、可能ですか?
出来るのであればお願いします。

895 名前:デフォルトの名無しさん :2006/06/25(日) 16:08:47
コンソールアプリが作りたいの?

896 名前:デフォルトの名無しさん :2006/06/25(日) 16:08:59
できます

897 名前:デフォルトの名無しさん :2006/06/25(日) 16:18:18
http://www.geocities.jp/monalipse/c/api/Console.html

898 名前:889 :2006/06/25(日) 17:05:03
色々考えてる内にもうこんなにレスが・・ありがとうございます。
コンソールアプリという訳ではないのですが、結果的にはそれに近いかも知れません。
一応質問の前にConsole関係も調べたのですが、どうやら理解をしていなかった
ようです。リンク先大変参考になります。
>>895
>>896
>>897
どうもありがとうございました。これでなんとかなりそうです。

899 名前:デフォルトの名無しさん :2006/06/25(日) 23:07:54
1秒間に30コマ
画面をキャプチャできる方法はありますか

900 名前:デフォルトの名無しさん :2006/06/25(日) 23:13:14
ultravncを使う

901 名前:デフォルトの名無しさん :2006/06/25(日) 23:33:28
nView Desktop Managerのズームウィンドウはなぜ30fpsで表示できるんですか??

902 名前:デフォルトの名無しさん :2006/06/26(月) 00:11:46
ソフトウェアでの処理じゃなくてハードでの処理だから。

903 名前:899,901 :2006/06/26(月) 00:12:11
VC2005EEで作りたいです。どうやって30fpsも表示しているのだろう・・

904 名前:899,901 :2006/06/26(月) 00:12:54
>>902
!?
じゃあ、作るのは不可能なんですか・・?

905 名前:デフォルトの名無しさん :2006/06/26(月) 00:14:33
え?キャプチャしたいんじゃなくて表示したいの?

906 名前:デフォルトの名無しさん :2006/06/26(月) 00:32:32
君の知性では無理。

907 名前:デフォルトの名無しさん :2006/06/26(月) 00:46:27
エベレストの山頂行って帰って来るくらいの努力は必要だな。

908 名前:デフォルトの名無しさん :2006/06/26(月) 03:41:47
高橋名人に、PrtSc→貼り付け→保存を繰り返してもらう。
5コマぐらいはいけるかも。

909 名前:デフォルトの名無しさん :2006/06/26(月) 06:10:01
NVIDIA SDK
http://developer.nvidia.com/object/sdk_home.html

910 名前:デフォルトの名無しさん :2006/06/26(月) 08:56:58
>>903
なんでその程度の知識しか無いのにEEなんて持ってるの?
割れ厨ですか?


911 名前:デフォルトの名無しさん :2006/06/26(月) 09:16:15
>>910
EE = Express Edition
最上位はTeam System

912 名前:デフォルトの名無しさん :2006/06/26(月) 10:23:33
・パレットを設定して、色を使う。
・配列に色の値を持たせておいて、色を使う。

この2つの違いが分かりません。
同じことをしているのではないかと思うのですが…。

913 名前:デフォルトの名無しさん :2006/06/26(月) 10:58:52

ちがうよ

LUTとかADCでぐぐってみな


914 名前:デフォルトの名無しさん :2006/06/26(月) 11:22:56
教えてください。
Editコントロールの右クリックメニューに、独自のコマンドを追加するにはどうしたらいいでしょうか。
WM_INITMENUPOPUPは来ないし、WM_CONTEXTMENUだと一から作ることしかできないし。

915 名前:デフォルトの名無しさん :2006/06/26(月) 11:50:17
サブクラス化で出来ないかな


916 名前:449 :2006/06/26(月) 12:58:53
> 結果は書いてなかったので試してみます。
下記のようなソースで試した結果、ロックを判定できました。

> while( 1 )
> {
> Sleep( 3000 );
> hDesk = OpenInputDesktop(0, FALSE, 0);
> if( GetUserObjectInformation( hDesk, UOI_FLAGS, &UserObjFlg, sizeof( UserObjFlg ), &WriteByte ) ) {
> puts( "ロック中ではありません。" );
> } else {
> puts( "ロック中です。" );
> }
> }


917 名前:デフォルトの名無しさん :2006/06/26(月) 20:44:09
>>914
この手のアプリは一から頑張って作ってるに一票

918 名前:デフォルトの名無しさん :2006/06/26(月) 20:52:46
>>884
ありがとうございます!

BCCだけで何とかするように頑張っている訳ですが、きっと参考になると思います!

しかし何でこの部分「Platform SDK: COM」文書はウヤムヤな事しか書いていないのか・・・

で、一応報告。

まだまだゴソゴソやってるんですが、自作コントロールの場合、

1. RegisterClass() / g_hWndMain = CreateWindow("MyClass")
2. CoCreateInstance(CLSID_..., IID_IOleObject, &pOleObject)
3. pOleObject->EnumVerbs() // 取得したポインタはそのまま捨てる(Release)
4. pOleObject->QueryInterface(IID_IOleWindow, &pOleWindow);
5. pOleWindow->GetWindow(&g_hWndWBC)
6. SetParent(g_hWndCtrl, g_hWndMain); // 無理矢理子ウィンドウに(^^;)
7. ShowWindow(g_hWndWBC, SW_SHOW); // 表示
8. メッセージループ突入

こんなやり方で、一応表示されているように見えます。コントロールに搭載されているボタンに結びつけられたOnClickプロシージャもちゃんと動作しているように見えます。
このコントロールに限りこれで使える事は使えるのかも。

しかし、WebBrowserコントロールにはこのやり方は通用しない・・・WebBrowserはEnumVerbs()してもウィンドウは生成されない。
どのコントロールでも使える正しい方法はどういうものなのだろうか?
というかそもそもEnumVerbs()して何で生成されるかワケがわからない・・・

919 名前:デフォルトの名無しさん :2006/06/26(月) 21:25:02
>>918
この辺はもう読んでるんですよね。
コンテナには結構 Required (必須) のインタフェイスがありますよ。

http://msdn.microsoft.com/library/default.asp?url=/workshop/components/containers/overview/containers.asp

920 名前:デフォルトの名無しさん :2006/06/27(火) 01:31:27
ttp://vista.xii.jp/img/vi5133909614.gif
この図のように、キーボードの「A」を打つと、それを別のソフトに「A」「B」「C」「D」という入力を
等時間間隔で送る、というような入力支援ソフトをつくりたいと思っています。
そこで、他のソフトへ入力を送る手段を教えてほしいです。

921 名前:デフォルトの名無しさん :2006/06/27(火) 07:02:11
SendInput

922 名前:914 :2006/06/27(火) 11:00:14
WM_CONTEXTMENUで一から作るしかなさそうですね。
回答してくれた方、ありがとうございました。

923 名前:デフォルトの名無しさん :2006/06/27(火) 13:56:15
リッチエディットをCreateWindowで作ってすぐ
SendMessage(hEdit, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM)&cfm);
したら入力した文字の2文字目から違うフォントになってしまいますどうしたら良いんでしょうか?

924 名前:デフォルトの名無しさん :2006/06/27(火) 18:06:00
button(チェックボックス)がチェックされているかを調べる関数を教えて下さい。
宜しくお願いします。

925 名前:デフォルトの名無しさん :2006/06/27(火) 18:10:58
SendMessage

926 名前:デフォルトの名無しさん :2006/06/27(火) 18:17:02
>>925
ありがとうございます。
このご恩は忘れません。

927 名前:923 :2006/06/27(火) 18:22:08
自己解決しました

928 名前:920 :2006/06/27(火) 20:12:08
>>921
できました!
ありがとうございました!

929 名前:920 :2006/06/27(火) 23:29:59
SendInputの件ですが、メモ帳には入力を送れたのですが、
MAME32というゲームのエミュレータは無反応です・・・
SetForegroundWindowで送り先のウィンドウをアクティブにし、SendInputで入力する、という
処理ですが、ウィンドウはアクティブになるものの、入力が反映されません。
同じ入力をキーボードから直接行うと反応するのですが・・・
キーボードからの直接入力とソフトからのSendInputによる入力ではどこが違うのでしょうか?

930 名前:デフォルトの名無しさん :2006/06/27(火) 23:30:53
MAMEはDirectInputでも使ってるんじゃない?

931 名前:920 :2006/06/27(火) 23:51:11
>>930
DirectInputを使っていても、MapVirtualKey()でスキャンコードを取得すれば
大丈夫らしいんですが、それでもできないです(汗)
ttp://printf.jugem.jp/?eid=346

↓送信部はこんなかんじです。(仮想キーコード65は「A」のことです)

case WM_TIMER:
 hWnd_obj = FindWindow( "classMAME32" , NULL );
 input[0].type = INPUT_KEYBOARD;
 input[0].ki.wVk = 65;
 input[0].ki.wScan = MapVirtualKey( 65 , 0 );
 SetForegroundWindow( hWnd_obj );
 Sleep( 30 );
 SendInput( 1 , input , sizeof( INPUT ) );
 return 0;

932 名前:デフォルトの名無しさん :2006/06/28(水) 01:01:29
自己破産しました

933 名前:デフォルトの名無しさん :2006/06/28(水) 01:38:34
よそ様のウィンドウのタブコントロールをTabCtrl_SetCurSelで選択している
タブを変えて、その親ウィンドウにタブが変更されたことを示すWM_NOTIFY
をLPARAMにNMHDRへのポインタをセットして送信したいのですが、アドレス
空間が違うためうまくいきません。
解決策、あるいは他の良い代替方法はありますか?

934 名前:デフォルトの名無しさん :2006/06/28(水) 01:40:17
VirtualAllocExでよそ様のウインドウのアドレス空間にNMHDRの領域を確保して
WriteProcessMemoryでデータを書き込んで
そのポインタを渡してやるとか

935 名前:デフォルトの名無しさん :2006/06/28(水) 09:55:21
マウスで押された事をエミュレートした方が楽な希ガス

936 名前:デフォルトの名無しさん :2006/06/28(水) 10:27:33
>>931
キーは押し下げるだけでなく、
上げることもあるのだ。

937 名前:デフォルトの名無しさん :2006/06/28(水) 10:31:12
>>931
それから、65じゃなくて、'A'としたほうがわかりやすい。
ASCII以外の文字セットを使っているWindowsは、寡黙にして聞かない。

938 名前:デフォルトの名無しさん :2006/06/28(水) 10:40:30
顧客に納品後にごくたまにrun timeエラーが出るときがあるんだけど、状況を聞いてもエラーを再現出来なくて問題を特定出来なくて困ってる。
で最近しったんだけど、タブブラウザのスレープニールとか、Mozilaとかにはエラーフィードバックエージェントみたいなのがあるみたいなんだけど、
これって、どうやって実装してるんだろうか?、そういうパッケージとかソリューションがあるの?
何か情報持ってたらお願いします。


939 名前:デフォルトの名無しさん :2006/06/28(水) 10:55:35
ということはプニルはMozilaからソースパクってるのか

940 名前:デフォルトの名無しさん :2006/06/28(水) 12:41:31
鯖落ちた?

941 名前:デフォルトの名無しさん :2006/06/28(水) 14:13:31
復活

942 名前:デフォルトの名無しさん :2006/06/28(水) 16:27:39
>>938
スレープニールもMozillaもどうやってるのか知らんけど、
発生するエラーが特定来てるんなら、そのエラーを
ハンドルすればいいじゃんかよ?
あとは実行ログとかエラーログとか画面キャプチャと付き合わせる。
パッケージは知らん。

943 名前:デフォルトの名無しさん :2006/06/28(水) 16:51:05
画面キャプチャも送信させちゃうのか。

944 名前:デフォルトの名無しさん :2006/06/28(水) 18:15:12
IEのsend, recvをhookしようとしてて、APIHook試そうとしてもまったく出来ない
ActiveXでブラウザ部分のコンポーネント使ってるからIE自体の実行部分にsend, recvが見当たらないんだと思うけど

どっかにIEのsend, recvをHookしてるようなサンプルソースありません?

945 名前:デフォルトの名無しさん :2006/06/28(水) 18:55:22
串使うんじゃないか?

946 名前:デフォルトの名無しさん :2006/06/28(水) 21:25:00
>937
UNICODE

947 名前:デフォルトの名無しさん :2006/06/28(水) 21:26:41
リストボックスのアイテム選択したら生成できなくなったんですが
どうやったら新たにアイテムを追加できますか?
教えてください。お願いします。


948 名前:デフォルトの名無しさん :2006/06/28(水) 21:29:02
ビットマップの幅と高さを得るAPIってありますか?
HBITMAPまたはHDCを使って得るようなやつです

949 名前:デフォルトの名無しさん :2006/06/28(水) 21:36:47
>>948
GetObject

950 名前:デフォルトの名無しさん :2006/06/28(水) 21:38:59
>>949
てふd

951 名前:947 :2006/06/28(水) 21:49:53
事故解決しました。
手前で範囲外の配列指定やってました。

952 名前:デフォルトの名無しさん :2006/06/28(水) 22:45:30

次スレ立てときましたよ。
【Win32API質問箱 Build44】
http://pc8.2ch.net/test/read.cgi/tech/1151501925/

953 名前:デフォルトの名無しさん :2006/06/28(水) 22:50:15


954 名前:920 :2006/06/28(水) 23:21:08
良くわからないうちにできるようになりました・・・

>>936
後々、その問題にもあたりました。
今は解決しています。
ありがとうございました。
>>937
'A'という表記もありなんですね。
ありがとうございました。

955 名前:デフォルトの名無しさん :2006/06/29(木) 00:29:06
Win64API

956 名前:デフォルトの名無しさん :2006/06/29(木) 13:31:01
タスクトレイのアイコンにマウスを乗せると、ツールチップが出ますが、
この文字列をアプリケーションから取得するには何というAPIを使えばできますか?

957 名前:デフォルトの名無しさん :2006/06/29(木) 14:15:21
GetWindowText

958 名前:956 :2006/06/29(木) 14:44:18
>>957
GetWindowTextは試してみましたが、タスクトレイのアイコンのツールチップの内容ではなく、
そのアプリケーションのタイトルバーらしき文字列しか取得できませんでした。
例えばタスクマネージャを起動すると、タスクトレイには "CPU 使用率 ○%" というツールチップが出ますが、
GetWindowTextで得られるのは "タスクマネージャ"という文字列のみでした。

"CPU 使用率 ○%" を取得する方法って無いものでしょうか。

959 名前:デフォルトの名無しさん :2006/06/29(木) 15:14:02
>>958
ちゃんと「ツールチップのウィンドウハンドル」を渡しているのか?

960 名前:デフォルトの名無しさん :2006/06/29(木) 16:06:42
てか、ツールチップのウィンドウハンドルなんて取得できるの?

961 名前:デフォルトの名無しさん :2006/06/29(木) 17:41:06
>>960
ウィンドウハンドルを取得できないウィンドウなんてあるのか?

962 名前:デフォルトの名無しさん :2006/06/29(木) 18:32:42
必要なくなって破棄されたウィンドウとか

963 名前:デフォルトの名無しさん :2006/06/29(木) 18:39:58
実行ファイルのあるフォルダの名前を取得する方法ありますか?

964 名前:デフォルトの名無しさん :2006/06/29(木) 18:52:07
>>963
argv[0]

965 名前:デフォルトの名無しさん :2006/06/29(木) 18:52:24
>>962
それは既にウィンドウじゃないだろ。

966 名前:デフォルトの名無しさん :2006/06/29(木) 18:55:54
GetModuleInstance

967 名前:デフォルトの名無しさん :2006/06/29(木) 18:57:13
>>963
「実行ファイル」とは何なのか、詳しく説明してもらおうか。

968 名前:デフォルトの名無しさん :2006/06/29(木) 19:01:51
>>965
>956 >958 でツールチップって言ってたからな。

> この文字列をアプリケーションから取得
いや、吊られちまったのか

969 名前:デフォルトの名無しさん :2006/06/29(木) 19:11:35
>>964
WinMainからの起動なのでargvが見当たりません。

>>966
ぐぐってみましたけど、これはC++のメソッドですか?
APIなど、Cからでもできる方法が嬉しいです。

>>967
VC++で作成したx86実行バイナリと言えばいいでしょうか。
拡張子.exeを持つファイルです。

970 名前:デフォルトの名無しさん :2006/06/29(木) 19:20:34
#include <stdlib.h>
__argv[0]



971 名前:デフォルトの名無しさん :2006/06/29(木) 19:20:43
>>969
スマン間違い
GetModulePath

972 名前:デフォルトの名無しさん :2006/06/29(木) 19:21:15
GetModuleFileName(NULL, , );

973 名前:デフォルトの名無しさん :2006/06/29(木) 19:25:38
GetModuleFileName( NULL, path, MAX_PATH )

974 名前:デフォルトの名無しさん :2006/06/29(木) 19:31:01
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_getmodulefilename.asp

975 名前:デフォルトの名無しさん :2006/06/29(木) 19:37:55
>>970-974
ありがとうございます。
ばっちりいけました。

976 名前:958 :2006/06/29(木) 23:28:04
マウスを乗せると出てくるツールチップ(呼び方違いますか?)の文字列を、マウスを乗せずに取得したいんですよ・・。
そういうAPIって無いんですかね。ググっても全然それらしいのが出てこないっすね。

977 名前:デフォルトの名無しさん :2006/06/29(木) 23:41:30
>>976
ツールチップが表示されていないときに文字列を取得するのは無理な場合もあると思う。
マウスを乗せて初めて文字列を決定する場合があるから。
文字列が固定されているツールチップなら取得できるかもしれないけど…。

978 名前:デフォルトの名無しさん :2006/06/29(木) 23:44:07
ツールチップを出すのはアプリケーションだ。
ツールチップが出る前に中身がほしいと思ったら
アプリケーションに働きかけるしかないんじゃないだろうか。
ツールチップが表示された後なら、ウィンドウハンドルを
どうにかして取得すれば後は簡単だと思うが。

目的と手段が逆になってたりしないか?

979 名前:958 :2006/06/30(金) 01:19:14
タスクトレイにアイコンを登録する時点でツールチップの文字列も指定するので、
どこかに常に格納されてていいはずなんですよね。

980 名前:デフォルトの名無しさん :2006/06/30(金) 03:50:28
>>979
それがその後のホバー時に表示される文字列と同じという
保証はないだろ。

981 名前:デフォルトの名無しさん :2006/06/30(金) 13:26:13
>>979
タスクトレイのツールチップって、実装としてはNOTIFYICONDATA構造体のszTipだろ?
ウィンドウハンドル取得しても、ウィンドウハンドルとNOTIFYICONDATA構造体を、
内部的にどうやって関連付けてるかなんてわからんし、
ウィンドウハンドルから取得するのは無理だと思うけど。

タスクトレイに登録されている一覧を取得するAPIがあったらできるかもしれんが、わしはしらん。

982 名前:デフォルトの名無しさん :2006/06/30(金) 13:38:31
Shell_NotifyIcon(SHELL32.dll)にフックしかけとけば?


983 名前:デフォルトの名無しさん :2006/06/30(金) 14:56:44
CPUの使用率ならパフォーマンスカウンタとかそれ専用のAPIから取れそうな気もするが、
タスクマネージャから情報を取らねばならぬのはなぜ。

984 名前:デフォルトの名無しさん :2006/06/30(金) 15:05:50
EDITコントロールの最大入力文字数をIDで設定するにはどうしたら
よかったのでしょうか?

985 名前:デフォルトの名無しさん :2006/06/30(金) 15:18:53
>>984
SendMessage(EM_LIMITTEXT, GetDlgItem(hWndDlg, IDC_EDIT). (WPARAM)999, 0);

986 名前:デフォルトの名無しさん :2006/06/30(金) 16:10:34
>>985
ありがとぅ、答えてくれて!

987 名前:デフォルトの名無しさん :2006/06/30(金) 18:13:51
>>983
よくわかんないけどNT系ならNtQuerySystemInformationで得た値をいじる

988 名前:デフォルトの名無しさん :2006/06/30(金) 18:50:33
>>985
SendDlgItemMessageも忘れないで。

989 名前:デフォルトの名無しさん :2006/06/30(金) 19:37:53
そんなくそ関数だからマクロだから知らないけど知りません

990 名前:デフォルトの名無しさん :2006/06/30(金) 19:46:37
そういう場合は
「関数だかマクロだか」
と表現するのですよお嬢様


991 名前:デフォルトの名無しさん :2006/06/30(金) 19:52:33
>>989
知らないなら是非知ってください。

992 名前:デフォルトの名無しさん :2006/06/30(金) 19:53:25
>>992
SendDlgItemMessageを使うメリットは?

993 名前:デフォルトの名無しさん :2006/06/30(金) 20:20:37
>>992
985のようにSendMessageとGetDlgItemを組み合わせるより文字数が少なくてすむ。

994 名前:デフォルトの名無しさん :2006/06/30(金) 20:22:57
つまりどうでもいいAPIってことだな

995 名前:デフォルトの名無しさん :2006/06/30(金) 20:30:31
埋め

996 名前:デフォルトの名無しさん :2006/06/30(金) 20:32:27
>>994
そういうこと。

逆に言えばSendMessageとGetDlgItemで代用できるから、
知らなくても困らないし、知らない人も多いのだろう。

997 名前:デフォルトの名無しさん :2006/06/30(金) 20:34:28


998 名前:デフォルトの名無しさん :2006/06/30(金) 20:35:19

次スレ
【Win32API質問箱 Build44】
http://pc8.2ch.net/test/read.cgi/tech/1151501925/


999 名前:デフォルトの名無しさん :2006/06/30(金) 20:36:00
一時期使ってたけど、ハンドルの方が関数化したときに扱いやすいことに気付いて使うのやめた

1000 名前:デフォルトの名無しさん :2006/06/30(金) 20:36:19

Win32API質問箱 Build44
http://pc8.2ch.net/test/read.cgi/tech/1151501925/l50


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.