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


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

Win32API質問箱 Build41
751 名前:743 :2006/04/03(月) 21:19:56
リソースは本に書いてある手順に従ってやったら、こんな感じになりました
ttp://www.uploda.org/uporg355339.jpg

752 名前:デフォルトの名無しさん :2006/04/03(月) 21:43:16
ありがちなオチだな。

753 名前:デフォルトの名無しさん :2006/04/04(火) 03:11:45
教えてくださいお願いします。
ウィンドウを作ろうとしてるのですが
一番最後のNULLの部分で警告がでるのですが
(warning C4133: '関数' : 'char [10]' と 'LPCWSTR' の間で型に互換性がありません)
どこをどうすれば良いのかがわからないです。
hWnd = CreateWindow(szClassName,
//タイトルバーにこの名前が表示
L"俺じゃわからんWindowプログラミング",
WS_OVERLAPPEDWINDOW,//ウィンドウの種類
CW_USEDEFAULT,//x座標
CW_USEDEFAULT,//y
CW_USEDEFAULT,//幅
CW_USEDEFAULT,//高さ
NULL,//親ウィンドウのハンドル、親ならNULL
NULL,//メニューハンドル、クラスメニューを使うときはNULL
hInst,//インスタンスハンドル
NULL);

754 名前:デフォルトの名無しさん :2006/04/04(火) 07:02:50
L"俺じゃわからんWindowプログラミング",
_T("俺じゃわからんWindowプログラミング")

Warningは行単位で出るので一番最後のNULLの部分で出ているわけではない。


755 名前:デフォルトの名無しさん :2006/04/04(火) 10:17:00
'char [10]'って言ってるんだから、警告が出ているのはszClassNameの方だと思われ。
szClassNameの宣言をCHAR(char)ではなく、WCHAR(wchar_t)もしくはTCHARにするべし。

756 名前:753 :2006/04/04(火) 10:38:40
>>754さん
ありがとうございます
一応TEXT("俺にはわからないwindowsプログラミング")でコンパイルしたのですが
やはり警告がでて、でもビルドは出来ました
ただコンパイル時の警告
(warning C4133: '関数' : 'char [10]' と 'LPCWSTR' の間で型に互換性がありません)
は、なぜ出るのかまだ、自分自身理解不足で、コンパイル時点では出てしまう警告
はビルドが正常に行われたらあまり気にしなくて良いのでしょうか
初心者の質問で申し訳ありません

757 名前:753 :2006/04/04(火) 10:45:35
>>755さん
ありがとうございます
szClassNameをWCHAR
にしたらコンパイルエラーがなくなりました
ちなみに、文字列を書くときはTEXT()で囲んで書く習慣
つけた方が良いのでしょうか
初心者すぎてすみません

758 名前:デフォルトの名無しさん :2006/04/04(火) 11:31:26
>>757
文字列はTEXT()で。
変数もTCHAR,PTSTR等を使ったほうがいい。たぶん。

759 名前:デフォルトの名無しさん :2006/04/04(火) 11:52:21
GetProcAddressにはASCII版しかないし、GDI+なんかはほとんどUnicodeしか食わない。
つーことで結局臨機応変に対応するしかないわけだが。

760 名前:デフォルトの名無しさん :2006/04/04(火) 12:27:17
>>757

LPTSTR、LPCTSTR は TCHAR[] で TEXT("hoge")とか_T("hoge")、
LPWSTR、LPCWSTR は WCHAR[] で L"hoge" 、
LPSTR、LPCSTR は CHAR[] で "hoge"、
LPOLESTR、LPCOLESTR は OLECHAR[] で OLESTR("hoge")、
BSTR はちょっと変なの、

と昔から決まってる。

761 名前:デフォルトの名無しさん :2006/04/04(火) 13:29:11
指定のプロセスを強制終了させたいんだけどそういうAPIありますか?
Internet ExplorerだとIEXPLORE.EXEのプロセスを殺すとか

762 名前:デフォルトの名無しさん :2006/04/04(火) 13:47:48
TerminateProcess
ただし、強制終了だから不具合起きても知らん。

763 名前:デフォルトの名無しさん :2006/04/04(火) 14:08:27
>>762
サンクス
関数名で色々ググってみたところこのやり方で大丈夫そうなのでちょっと試してみる
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200512/05120047.txt
>強制終了だから不具合起きても知らん。
家族に変なもの見られて人生に不具合が起きるよりはマシなのでおk

764 名前:デフォルトの名無しさん :2006/04/04(火) 15:03:56
>>763
そんな用途ならWin+D or Win+Mで十分じゃ?

765 名前:デフォルトの名無しさん :2006/04/04(火) 15:17:21
なにこのWindows組み込みボスが来たコマンド
Windows数年間使ってきたけど今まで知らなかった
せっかくだからTerminateProcessの方も作ってみて
そのあとでキー状態変更APIでも探してそっちのも作ってみる
ありがと

766 名前:デフォルトの名無しさん :2006/04/04(火) 16:21:06
>>740
ちゃんとやるなら
CreateProcess()で取ってきたpiの中にあるハンドルをゴニョゴニョして
ReadFile()するのが定石

てゆうかかなり昔にやったことなので詳しいことは忘れた後は自分で調べてくれ
(猫のパイプがどうのこうのって所にサンプルがあったような気がする)

ちなみに、結果をnotepadに出す方法はシラン

767 名前:デフォルトの名無しさん :2006/04/04(火) 16:24:37
>>743
scrnsave.libをちゃんと入れたか?

768 名前:デフォルトの名無しさん :2006/04/04(火) 16:35:41
>>764
ただのデスクトップだけだと怪しいからこっちの方がいいんジャマイカ?

・適当なテキストファイルを作成
・そのファイルのショートカットを作る
・ショートカットを右クリックしてプロパティを選択
・ショートカットキーという項目に適当なキーを登録、実行時の大きさは最大にしておく

結構無駄な努力だけどね<ボスがきた

769 名前:743 :2006/04/04(火) 18:22:52
>>767
入れました
コンパイル後に、本に書いてあった通りに.exeの部分を.scrに変更すると起動するんですが
画像は表示されないんです

770 名前:デフォルトの名無しさん :2006/04/04(火) 19:41:56
指定された区域にスクロールバーつけたいんですが、
ウィンドウって分割できますか?

771 名前:デフォルトの名無しさん :2006/04/04(火) 19:44:42
位置の指定はいくらでも出来るので、好きなように分割しろ。
問題は指定された区域ではなく、指定した区域になるということだ。

772 名前:770 :2006/04/04(火) 21:01:31
>>771
ありがとうございます。
小出しすみません。
分割の方法を教えてください。
見えない子ウィンドウにバーをつけようかと試みたのですが、
バーも消えてしまって上手くいきませんでした。
お願いします。

773 名前:デフォルトの名無しさん :2006/04/04(火) 21:12:30
>>769
exeと同じ起動方法で起動しない、
とか言うオチじゃないだろうな?

774 名前:770 :2006/04/04(火) 21:36:04
分かりにくいですね。すみません。
CreateWindow()でSCROLLBARクラスを指定したら、座標は指定できますが
旧式のスクロールバーになってしまうので
xp仕様(?)のスクロールバーにできませんか?
って事です。

775 名前:デフォルトの名無しさん :2006/04/04(火) 22:41:23
RSTパケを送出したいのですが、socketの生成から、
順にどんな関数を使えばいいですか?
とりあえず関数名だけ羅列してくれれば助かります。

776 名前:デフォルトの名無しさん :2006/04/04(火) 22:55:16
世も末だな

777 名前:デフォルトの名無しさん :2006/04/04(火) 22:59:25
connect() して send() して close() じゃないかな、うん

778 名前:743 :2006/04/05(水) 00:23:09
>>773
起動はして、マウスを動かすと終了する感じでスクリーンセーバーの動きはするんですが
用意した画像は表示してくれません

779 名前:デフォルトの名無しさん :2006/04/05(水) 01:10:22
プルダウンメニューをプログラムで閉じたいのですが、いい方法はないでしょうか。
あるボタンからプルダウンメニューが表示されているウインドウに
ウインドウメッセージを投げると、プルダウンメニュー閉じ、そのウインドウメッセージを処理するようなイメージです。
エクスプローラの表示(一覧/詳細/アイコン/...)ボタンに近いです。

で、以下のように書いてみたのですが、プルダウンメニューは閉じるものの、ボタンは凹んだままで完全ではありません。
HWND hWndMenu = ::FindWindow(_T("#32768"), NULL);
if ( ::IsWindow(hWndMenu) ) ::DestroyWindow(hWndMenu);

あと、プルダウンメニューを表示するボタンはたくさんあり、特定のメニューを閉じるという実現方法は避けたいです。

よい方法があればご教授をお願いします。m(_ _ )m


780 名前:デフォルトの名無しさん :2006/04/05(水) 01:16:00
>>743
多分rcファイルのリソース名がIDになっているんだな
LoadBitmap()の所の"MY_BITMAP"をMAKEINTRESOURCE(MY_BITMAP)に変えると解決するかも

781 名前:デフォルトの名無しさん :2006/04/05(水) 01:42:42
>>779
keybd_eventでは駄目なのかのぅ?

782 名前:775 :2006/04/05(水) 03:03:51
>>777
レスありがとうございます。
が、そういうことでなくて、自前でRSTパケだけを送出したいのです。

(1) socket()
(2) setsockopt()
(3) sendto()

だけで送れそうなので試してみるけどダメっぽいんです。
なので、根本的に使う関数とかが間違えてるかなぁと思いまして。。



783 名前:デフォルトの名無しさん :2006/04/05(水) 03:27:11
生ソケットとか

784 名前:デフォルトの名無しさん :2006/04/05(水) 03:42:23
ヒント:スレ違い

785 名前:デフォルトの名無しさん :2006/04/05(水) 05:05:43
ヒント房、うざい。


786 名前:デフォルトの名無しさん :2006/04/05(水) 06:14:25
基礎知識が欠乏

787 名前:デフォルトの名無しさん :2006/04/05(水) 09:24:04
>>778
> 起動はして、マウスを動かすと終了する

回線切って(ry

788 名前:デフォルトの名無しさん :2006/04/05(水) 10:19:33
>>779 WM_CANCELMODE

789 名前:デフォルトの名無しさん :2006/04/05(水) 10:41:31
すみません。
1つ質問させてください。

ディレクトリの削除で
SHFileOperation
を使いたいのですが。

相対パスが使えません。
EX:"..\..\DATA"こんな感じで。

これは、使えないのでしょうか?

もし出来ないとしたとき、APIで相対パスをフルパスに変換するAPIは、あるのでしょうか?

もしわかりましたら教えてください。




790 名前:デフォルトの名無しさん :2006/04/05(水) 10:44:49
もしかして
- \
+ \\
とかって問題?

791 名前:デフォルトの名無しさん :2006/04/05(水) 10:45:18
>>789
"..\\..\\DATA"じゃないのか?と適当な事を言ってみる

792 名前:デフォルトの名無しさん :2006/04/05(水) 10:56:20
>>790-791

いや、VBを使ってるんですよ。
フルパスでは、成功しています。


793 名前:デフォルトの名無しさん :2006/04/05(水) 11:19:48
>>792
API でいいなら

GetCurrentDirectory して PathAppend して PathCanonicalize かな。

794 名前:デフォルトの名無しさん :2006/04/05(水) 11:20:19
ヒント:MSDN

795 名前:デフォルトの名無しさん :2006/04/05(水) 11:20:54
>>793
ありがとうございます。
やってみます。


796 名前:デフォルトの名無しさん :2006/04/05(水) 11:34:40
GetFullPathNameを忘れるな。

797 名前:デフォルトの名無しさん :2006/04/05(水) 11:51:54
それ以前に、カレントディレクトリからの相対パスを
扱うってのは危険じゃないか?
カレントディレクトリ=実行ファイルのあるディレクトリとか
思ってないか?

798 名前:デフォルトの名無しさん :2006/04/05(水) 11:55:41
皆さん色々ありがとうございます。

vbつかってるのでカレントディレクトリは、app.pathでとります。


799 名前:デフォルトの名無しさん :2006/04/05(水) 12:06:05
>>798
それカレントじゃない。

800 名前:デフォルトの名無しさん :2006/04/05(水) 12:28:33
>>799
EXEを実行したときの始めに
app.pathでとればカレントになると思うが違ってますか?

801 名前:デフォルトの名無しさん :2006/04/05(水) 12:35:12
すんませんAPIの名前を教えてください。
「ファイルを開く」で使われるコモンダイアログはOpenFileName()ですが、
似たような感じで「フォルダ」のパスを取得するAPIはなんと言うやつでしょうか?


802 名前:デフォルトの名無しさん :2006/04/05(水) 12:36:56
>>801
SHBrowseForFolder()の事か?
この腐女子め!

803 名前:デフォルトの名無しさん :2006/04/05(水) 12:44:21
app.pathは実行ファイルのパス

ショートカットの作業フォルダ等で、
起動時のカレントが変更されたりする可能性はあるだろ。

804 名前:デフォルトの名無しさん :2006/04/05(水) 12:57:01
>>803
そういうことか
ご指摘どうもありがとう。
EXEのパスがほしかっただけなので。

皆さんいろいろありがとうございました。



805 名前:デフォルトの名無しさん :2006/04/05(水) 14:06:24
>>802
表示デキター、サンクソ
しかし寒いギャグは頂けないな

806 名前:デフォルトの名無しさん :2006/04/05(水) 17:30:24
音をミュートにするAPI又は方法はありませんか?
検索しても出てこなかったので

807 名前:デフォルトの名無しさん :2006/04/05(水) 17:38:20
この辺じゃね?
ttp://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html

808 名前:デフォルトの名無しさん :2006/04/05(水) 17:44:55
ありがと、その辺探してみる

809 名前:デフォルトの名無しさん :2006/04/05(水) 22:33:32
質問があります。

Win32API@VC++2005でMP3プレイヤーを作ろうとしています。
でも、どうにも再生できないので、知恵を拝借願いたく。

mciSendStringを利用し、以下のようなプログラムを書きました。

if(!mciSendString("open \"test.mp3\" type mpegvideo alias MP3", NULL, 0, NULL)){ // ファイルを開く
 mciSendString("play MP3 notify", NULL, 0, hWnd); // MP3の再生
}

とりあえずDebugでビルドしてるので、プロジェクトのDebugフォルダに
test.mp3を置いてビルドしてるんですが、
ifの中にブレイクポイント仕掛けてもそこに到達すらしてないようです。

なんとかMP3を再生する方法を教えてください。お願いします。

810 名前:デフォルトの名無しさん :2006/04/05(水) 22:47:50
>>809
まずはtest.mp3をフルパスで指定してみたら?

811 名前:デフォルトの名無しさん :2006/04/05(水) 22:50:19
>>809
まず問題が起きたら原因を探れ。原因が分からないと対処できないからな。
で、これを踏まえて
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_mcisendstring.asp
を見ると
>Returns zero if successful or an error otherwise.
>To retrieve a text description of mciSendString return values, pass the return value to the mciGetErrorString function.
と書いてある。
何をすればいいか分かるな?

812 名前:デフォルトの名無しさん :2006/04/05(水) 22:54:57
>>809
環境が分らんからアレだがVCはデバッグ時のカレントディレクトリがDebugフォルダではない。

813 名前:デフォルトの名無しさん :2006/04/05(水) 23:38:57
>>809
せっかくだからIGraphBuilder使おうよ

814 名前:デフォルトの名無しさん :2006/04/06(木) 00:15:28
>>809の人気に嫉妬

ちなみにtype mpegvideoがなくても拡張子で判断してくれたりする。

815 名前:デフォルトの名無しさん :2006/04/06(木) 06:40:58
RenderFileが簡単でマジオススメ

816 名前:743 :2006/04/06(木) 19:12:15
>>780
遅くなりましたが、レスありがとうございました
おかげで解決できました

817 名前:デフォルトの名無しさん :2006/04/06(木) 23:25:34
エクスプローラバー(グーグルツールバーみたいなやつ)自作して
ひととおり動作しました。
で、IEではなく、エクスプローラで動かしたところIWebBrowser.Documentは
IHTMLDocument2をもたないようです。
このときはどのようなインターフェースをもつオブジェクトが入ってきますか?
または調べる方法、ドキュメントはないですか?

818 名前:779 :2006/04/07(金) 00:50:15
>781さん
>788さん
試してみたところ、どちらの方法でも大丈夫そうです。
WM_CANCELMODEを使うのが本来の方法みたいですね。

どうもありがとうございました。m(_ _ )m

819 名前:デフォルトの名無しさん :2006/04/07(金) 06:42:06
IShellViewとかじゃね

820 名前:デフォルトの名無しさん :2006/04/07(金) 07:01:05
後この辺のインターフェースを片っ端から要求してみるとか
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/interfaces.asp


821 名前:デフォルトの名無しさん :2006/04/07(金) 14:57:15
ツールチップをエディットボックスやチェックボックスに設定するにはどうしたら良いでしょうか!?
ラベル上ならちゃんと表示されるのですが…

822 名前:デフォルトの名無しさん :2006/04/07(金) 17:22:13
アプリケーションの関連付けについて教えて下さい ○<\_

特定拡張子のファイルにあらかじめアプリケーションを関連付けておいて、
ファイルをダブルクリックする事でアプリケーションを起動する場合、
呼び出されるアプリケーション側ではファイル名をどのように取得すれば
良いのでしょうか?

823 名前:デフォルトの名無しさん :2006/04/07(金) 17:29:33
>>822
コマンドライン引数
(w)WinMainの3番目の引数や(w)mainならargc。

WinAPIの関数を使いたければGetCommandLine。
その際にはPathGetArgsが使えるかもしれない。

824 名前:デフォルトの名無しさん :2006/04/07(金) 17:42:45
他のウインドウのイメージを取得したいのですが、手前で作成したDCを添えて、
WM_PAINTメッセージをターゲットのアプリケーションウインドウに送っているのですが、
全く何も取得できません。

PowerToysのAlt+Tab Replace等では、ウインドウの画像を取得して表示していますが、
どうするとこのように取得できるのでしょうか。

どうぞ宜しくお願いします。

825 名前:デフォルトの名無しさん :2006/04/07(金) 17:51:10
boot.iniの/3GBとVC.netの/LARGEADDRESSAWAREオプションを使っても
7c800000にkernel.dllが配置されるんだけど、
/LARGEADDRESSAWAREは2GB以上のメモリ空間を使えるというだけで
連続したのは無理ってことですか?

826 名前:822 :2006/04/07(金) 18:00:37
>823
取得できました、マリガトウゴザイマス

827 名前:デフォルトの名無しさん :2006/04/07(金) 18:24:21
>>824
GDIオブジェクトはプロセス跨げなかったと思う。
あとWM_PAINTはシステムが送るメッセージなので、ユーザーが勝手に送ってはダメ。
フックで目的のプロセスに忍び込んで、WM_PRINT(WM_PAINTじゃないよ)送ればいいんじゃない?

828 名前:デフォルトの名無しさん :2006/04/07(金) 18:31:22
>>825
一応訊くけどWindowsのバージョンは?

829 名前:デフォルトの名無しさん :2006/04/07(金) 19:14:39
http://blogs.msdn.com/oldnewthing/archive/2004/08/16/215089.aspx
この話だな。

830 名前:825 :2006/04/07(金) 20:56:59
>>828
XP Homeです。

>>829
ありがとうございます。無理みたいですね、諦めます。

831 名前:デフォルトの名無しさん :2006/04/07(金) 21:57:26
http://support.microsoft.com/default.aspx?scid=kb;ja;328882
重要 : /3GB スイッチは、次のオペレーティング システムでのみ使用してください。
.Microsoft Windows Server 2003 Datacenter Edition
.Microsoft Windows Server 2003 Enterprise Edition
.Microsoft Windows 2000 Advanced Server
.Microsoft Windows 2000 Datacenter Server
.Microsoft Windows NT 4.0 Enterprise Server

832 名前:デフォルトの名無しさん :2006/04/07(金) 22:29:39
>>824
死ぬほど強引な手法だが。
ttp://slashdot.jp/comments.pl?sid=147813&cid=470365

833 名前:デフォルトの名無しさん :2006/04/08(土) 00:04:21
>>831

その情報は古い。

834 名前:デフォルトの名無しさん :2006/04/08(土) 00:06:47
XP Homeで/3GBが効かないのは変わらないけど。

835 名前:デフォルトの名無しさん :2006/04/08(土) 03:11:53
IEでTABキーを押してコントロール(ボタン)に標準をあわせ、Enterを押してボタンを押すということ
(例えば、http://www.google.co.jpを開いていたとすれば、TABキーを押して「Google 検索」に
フォーカスを当て、Enterを押して検索といったこと)をアプリケーション側から自動で行いたくて、
HWND ie = FindWindow("IEFrame", 0);
SendMessage(ie, WM_KEYDOWN, VK_TAB, 0);
SendMessage(ie, WM_KEYDOWN, VK_RETURN, 0);
というようなコードを書いたのですが、うまく動作しませんでした。
何か良い方法はありませんでしょうか?

836 名前:デフォルトの名無しさん :2006/04/08(土) 03:53:30
>>835
SendMessageではなく、PostMessageを使う。

837 名前:デフォルトの名無しさん :2006/04/08(土) 04:49:38
>>835
SendInputを使う。

838 名前:デフォルトの名無しさん :2006/04/08(土) 05:26:18
>>837さんの方法で出来ました
ありがとうございました!

839 名前:デフォルトの名無しさん :2006/04/08(土) 07:16:28
一般に、リストビューコントロールのカラムの数ってどうやると得られるんでしょうか? アイテムの数はLVM_GETITEMCOUNTで得られるわけですが・・・

840 名前:デフォルトの名無しさん :2006/04/08(土) 07:53:51
>>839
Header_GetItemCount(ListView_GetHeader(hList));
はどうだろうか。

841 名前:デフォルトの名無しさん :2006/04/08(土) 11:10:14
WIN32アプリケーションで、IEなどブラウザの表示をさせたいのですが、
WIN32APIでそれを実現する手段ありますでしょうか?
出来ればクッキーを渡したり、ポストをしたいのですが。


842 名前:デフォルトの名無しさん :2006/04/08(土) 11:12:42
簡単に荒らしツールが作れてしまうね

843 名前:デフォルトの名無しさん :2006/04/08(土) 11:41:11
競馬の投票プログラムを作りたいなと思っておりまして・・・。
最後のパスワードの入力などはブラウザに任せたいと思っているのですが・・・。

844 名前:デフォルトの名無しさん :2006/04/08(土) 12:31:17
>>841
CreateProcess辺りじゃないかと

845 名前:デフォルトの名無しさん :2006/04/08(土) 13:21:25
質問です。
SelectObjectが失敗する状況ってどんな感じですか?

LoadImageでよみこんだやつで、GetObjectでの情報取得は成功していて読み込み失敗ではないとおもいます。
SelectするHDCもGetDCでウインドウのDCを取得後CreateCompatibleDCしています。
なにか、心当たりありませんか?

846 名前:デフォルトの名無しさん :2006/04/08(土) 13:43:59
>An application cannot select a bitmap into more than one DC at a time.

847 名前:デフォルトの名無しさん :2006/04/08(土) 13:59:16
>>846
レスThx。
一度に2つ以上のBitmapをセレクトできないよー。
って感じですか??(エキサイト翻訳使ったんですけどね・・・。

関連付けにSelectObject使わない方法は無いし。
Sleepいれろとかそういう意味ではないと思うんだけど・・・。

あ!それとも、2つのDCにひとつのBitmapをSelectできないよー。ってことですかね。
そういえば後者には心当たりが。。。
ちょっといじってみます。

848 名前:847 :2006/04/08(土) 14:06:03
えーっと。できました。
うーん。こんな仕様だとは思わなかった。
それはそれとして、助かりました。Thx!!

849 名前:デフォルトの名無しさん :2006/04/08(土) 23:03:02
エクスプローラのツールバーの更新とかのボタンを押したときって
どんなメッセージがいってるんでしょうか?
spy++でツールバーみてもそれらしいのが見当たらないんですが


850 名前:デフォルトの名無しさん :2006/04/08(土) 23:04:26
そらツールバーみたって分からんわな

851 名前:デフォルトの名無しさん :2006/04/08(土) 23:13:22
あは、ウインドウをターゲットにしてツールバー関係を見てたということです。
それでも間違ってるかもしれないけど

852 名前:デフォルトの名無しさん :2006/04/08(土) 23:18:26
とりあえずマウスのメッセージ

853 名前:デフォルトの名無しさん :2006/04/09(日) 00:41:14
指定プロセスのタブ(ボタン?)をプロセス自体は終了せずにタスクバーから消すAPIありますか?
ウィンドウ最小化とのコンボでちょっと上手くやってみたい

854 名前:デフォルトの名無しさん :2006/04/09(日) 03:47:05
なにやりたいのかわからないけど、
ShowWindow(SW_HIDE)でいいんじゃない?

855 名前:デフォルトの名無しさん :2006/04/09(日) 10:50:16
ありがとう
ウィンドウハンドルはリストで保持しておいて後で戻せば大丈夫そうだね

856 名前:デフォルトの名無しさん :2006/04/09(日) 11:46:43
ごめんもう一つ質問
プロセスIDや実行ファイル名が分かっていて、そこからウィンドウハンドルを出すにはどうすればいい?
EnumWindows()とかEnumThreadWindows()、GetWindowThreadProcessId()辺りを探してみたけどそれぞれ使う引数がバラバラでわけわかめ
ウィンドウハンドル取得にはスレッドIDが必要だし(EnumThreadWindows())、
スレッドID取得するにはウィンドウハンドルが必要(GetWindowThreadProcessId())

857 名前:デフォルトの名無しさん :2006/04/09(日) 11:57:33
現在実行中のプロセスの数を取得するにはどうすればいいでしょう?

858 名前:デフォルトの名無しさん :2006/04/09(日) 12:43:55
//プロセス一覧取得
if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0))==INVALID_HANDLE_VALUE)
 return;

//プロセス情報格納構造体初期化
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);

//プロセスリストの最初のポインタを取得し、ループごとに次のアイテムに移動
for(BOOL bResult = Process32First(hSnap, &pe); bResult; bResult = Process32Next(hSnap, &pe))
 count++;

CloseHandle(hSnap);

一応検索してみたけど無かったから自分の使ってる走査を弄ってみた
ちゃんとできるかどうかは分からない

859 名前:デフォルトの名無しさん :2006/04/09(日) 12:46:58
>>856
Googleに聞け。

860 名前:デフォルトの名無しさん :2006/04/09(日) 12:54:43
>>859
小一時間ほどお聞きした後の質問だから許して

861 名前:デフォルトの名無しさん :2006/04/09(日) 13:05:59
>>860
だが断る

862 名前:デフォルトの名無しさん :2006/04/09(日) 13:49:03
>>860
許さん
NHK杯の記録係は許さん

863 名前:デフォルトの名無しさん :2006/04/09(日) 14:19:24
>>858
できました。ありがとうございました。

864 名前:デフォルトの名無しさん :2006/04/09(日) 17:22:20
猫でも〜を見つつ、ウィンドウにBMPを表示させようとしているのですが、
200*200の24ビットカラーBMP(ペイントで作成)を表示することができません。
SetDIBitsToDeviceを使ってやってみようとしているのですが、
表示させようとしているエリアが真っ黒になります。

真っ黒になるということはどういうミスが考えられるでしょうか?
アドバイスお願いします。

865 名前:デフォルトの名無しさん :2006/04/09(日) 17:30:08
>>864
いろいろありすぎて書ききれない。

866 名前:デフォルトの名無しさん :2006/04/09(日) 17:34:19
とりあえずまともに動くサンプルを見つけてそれを参考にする。
動かないサンプルを参考にしてもしょうがないだろ

867 名前:デフォルトの名無しさん :2006/04/09(日) 17:58:38
>>856
EnumWindowsで全てのウィンドウハンドルを列挙することができる。
それぞれをGetWindowThreadProcessIdに渡して得られたIDと
自分が知っているIDとが一致するウィンドウだけを記録しておけば、いいのでは?

もっと単純な方法を俺は知らない。

868 名前:デフォルトの名無しさん :2006/04/09(日) 18:17:04
スタートボタンを押したときに出てくるスタートメニューのウインドウハンドルって
取り方ありますか?
ウインドウタイトルは無いようなんですが。

869 名前:デフォルトの名無しさん :2006/04/09(日) 18:19:47
>>856
ウィンドウハンドルを取得するのにスレッドIDが必要なわけでも、
スレッドIDを取得するのにウィンドウハンドルが必要なわけでもない。
ウィンドウハンドルもスレッドIDも取得する方法は沢山ある。

単にそれらが、ウィンドウハンドルからスレッドIDを取得するAPIと、
スレッドIDからウィンドウハンドルを取得するAPIなだけ。

870 名前:デフォルトの名無しさん :2006/04/09(日) 18:28:07
だが決して具体的な名は挙げない。

871 名前:デフォルトの名無しさん :2006/04/09(日) 19:05:56
>>864
1.COLORONCOLOR などのモードの設定がない
2.bmp_info が正しくない
3.bitmap データが真っ黒
StretchDIBits() などでも描けるが、心配なら前もって hdc を FillRect() で
背景色、例えば白で塗りつぶしておく。
左上座標、画面の縦横、絵の縦横は間違ってないという前提。
猫のどの章を見ているか言えばもっと話が早いかも。粂井さんの palette の設定
のとこは間違ってたと思うが、直っているかな。今回 BPP24で関係ないが。

872 名前:デフォルトの名無しさん :2006/04/09(日) 19:49:28
>>865
説明が足らなくてすみませぬ。

>>866
その通りだねってことで別のサンプルで試してみたら出来ました。
ありがとん。

>>871
170章見てて出来ず、172章でやってみたら出来ました。
(ただし、24ビットカラーなら出来るけれども、他のだとパレット設定が失敗してしまいますね。
まだ直ってないのかもしれませんね。)
ちゃんと原因を理解していないので、挙げてくれたのを検証してみます。

御三方、レスありがとうでした。

873 名前:デフォルトの名無しさん :2006/04/09(日) 20:30:06
DLLの関数をLoadLibraryで呼び出そうとしているのですが、
実行時に上手く動作せず、困っています。
どんな状態かというとビルド自体は特に問題なく出来ているのですが、
関数をポインタ経由で呼び出した後に戻ってくる値がおかしいといった感じです。
関係のありそうな部分を適当に抜き出してみるとこんな感じに書いてあります。

if((hInstDLL=LoadLibrary("Advapi32.dll"))==NULL)
MessageBox(NULL, "「Advapi32.dll」のロードに失敗しました。", "エラー", MB_OK);

typedef LONG (APIENTRY *TFUNC)(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
TFUNC DllFunction;
DllFunction=(TFUNC)GetProcAddress(hInstDLL,"RegOpenKeyExA");

if(DllFunction==NULL)
MessageBox(NULL, "関数のアドレスの取得に失敗しました。", "エラー", MB_OK);

int ref = DllFunction(hKey,pSubKey,ulOptions,samDesired,phkResult);

実際のソースでは RegCloseKey, FreeLibrary とかはちゃんとしています。
実行したときは戻り値は「ERROR_SUCCESS」、
だけれども「phkResult」の値はNULLではないものの不正な値になっています。
MessageBoxのエラーは特に表示されていません。
どこに問題があるのか、わかる方がいたらお教えいただけませんでしょうか?
よろしくお願いします、長文失礼しました。


874 名前:873 :2006/04/09(日) 20:35:59
補足です、なぜこんな紛らわしい事をしていることかというと
既存のアプリケーション(バイナリの)動作を替えたかったからです。

875 名前:デフォルトの名無しさん :2006/04/09(日) 21:17:19
カレントディレクトリを確認したか? パスは確認したか?


876 名前:873 :2006/04/09(日) 22:13:08
>>875
一応ダイアログを表示してみたりとか、そのほかでテストをしてみたので
ロードするDLLに間違いは無いんじゃないかと思います。

877 名前:デフォルトの名無しさん :2006/04/10(月) 00:14:58
>「phkResult」の値はNULLではないものの不正な値になっています。

不正な値とは?
どうやって判断したの?

878 名前:873 :2006/04/10(月) 00:30:58
>>877
sprintf(test, "%X,%s,%X,%X,%X",hKey,pSubKey,ulOptions,samDesired,*phkResult);
と言うような表示をしてみた時に実行する前には
「80000001,Software\test\test,0,F003F,CCCCCCCC」
実行した後には「0xD8」となっていたからです。
「80000001,Software\test\test,0,F003F,D8」
ハンドルでこの値はおかしいのでないかなと思ったからです。


879 名前:デフォルトの名無しさん :2006/04/10(月) 00:50:12
>>878
じゃあ、どんな値なら正しいのさ?

880 名前:873 :2006/04/10(月) 00:59:50
>>879
0x400000(実行モジュール領域?)以上なら普通に使っていて
あり得る値だと勝手に思っていたのですが…

881 名前:デフォルトの名無しさん :2006/04/10(月) 01:04:56
思い込みでプログラム作るんじゃねえ

882 名前:856 :2006/04/10(月) 01:09:26
>>867
exe名をテキストから読み込み→プロセス一覧から一致するexeを検索、プロセスIDを取得
としてるのでそれだとプロセス一覧を2回まわすことになるから速度面で少し不安
情報後出しスマソ

>>869
くぁしく
いや一応Google先生にお聞きしてくるけど

883 名前:873 :2006/04/10(月) 01:10:47
>>881
申し訳ないです。
思いつく限りは試してみましたが、何が原因で実行出来ないのでしょうか?
そろそろ寝ないと仕事がつらいので今日は落ちます。
明日、必ず返信します。

884 名前:デフォルトの名無しさん :2006/04/10(月) 01:16:16
>>883
実行出来ないって何が?
DllFunctionはERROR_SUCCESSを返しているんだろ?
ERROR_SUCCESSを返している以上ハンドル値は格納されている。
で、実際にCCCCCCCCからD8になったと>>878で言ってるじゃないか。

885 名前:873 :2006/04/10(月) 01:19:57
>>884
エラーで強制終了されてしまいます。
エラー内容は"0x00551522"の命令が"0x000000D8"のメモリを参照しました。メモリが"read"になることはできませんでした。
と言った感じです。


886 名前:873 :2006/04/10(月) 01:21:51
言葉不足でした。
返ってきたハンドルの「0x000000D8」を使おうとすると
エラーが起きると言ったところです。


887 名前:デフォルトの名無しさん :2006/04/10(月) 01:24:22
>>886
エラーが起こってるところのコードも晒した方がいいんじゃねえかな?

888 名前:デフォルトの名無しさん :2006/04/10(月) 01:44:56
ハンドルとポインタを混同している悪寒。

889 名前:デフォルトの名無しさん :2006/04/10(月) 02:18:15
RegOpenKeyEx() の最後の引数に渡しているポインタがあやしい
phkResultってどこを指してるんだろうね?


890 名前:デフォルトの名無しさん :2006/04/10(月) 07:01:30
ハンドルをポインタとして読み書きしているね絶対

891 名前:デフォルトの名無しさん :2006/04/10(月) 09:46:07
お手上げ。

我が家でも、
80000001,Software\test\test,0,F003F,0 //←できれば初期化する癖
80000001,Software\test\test,0,F003F,7B4

DLLの動的ロードを使わずに、普通にRegOpenKeyExを呼び出したら、
80000001,Software\test\test,0,F003F,7B0

この7B4や7B0のハンドル使って、RegSaveKeyしてみたら、
空のファイルしか出力されなかった。


892 名前:デフォルトの名無しさん :2006/04/10(月) 09:51:52
PHKEY phkResult;

とだけして、phkResultが指す先を用意していない悪寒。


893 名前:デフォルトの名無しさん :2006/04/10(月) 09:56:37
>>892
それだとRegOpenKeyEx呼び出した時点でアウツじゃね?

894 名前:デフォルトの名無しさん :2006/04/10(月) 10:00:32
HKEY hkResult = NULL;
として &hkResult を渡してみ

895 名前:デフォルトの名無しさん :2006/04/10(月) 10:04:33
つーか問題の本質は RegOpenKeyEx 側じゃなくて、その後のハンドル利用コードの予感

896 名前:デフォルトの名無しさん :2006/04/10(月) 15:37:58
自分自身の実行ファイル名を取得するにはどうしたらいいんでしょうか。
実行ファイル名をハードコーディングできないプログラムなのです。
main()から始まるコンソールアプリなら、argv[0]からファイル名を取得できるのですが。
WinMain()から始まるプログラムの場合にどうしたらいいか分かりません。

897 名前:デフォルトの名無しさん :2006/04/10(月) 15:40:34
>>896
GetCommandLine()

898 名前:デフォルトの名無しさん :2006/04/10(月) 15:41:44
ただし、コマンドライン引数が含まれる。

899 名前:896 :2006/04/10(月) 15:44:05
>>896の補足です。
ウインドウを持たないプログラムですので、
GetWindowModuleFileNameは使えないんです。

画面を一切出さないプログラムを作ろうとして、コンソールアプリを作ったら、
実行時にコンソール画面が出てしまったので、Win32 Applicationでウインドウなしの
プログラムとして作り直しました。

900 名前:デフォルトの名無しさん :2006/04/10(月) 15:45:02
GetModuleFileName()

901 名前:デフォルトの名無しさん :2006/04/10(月) 15:45:43
>>897
ありがとうございます!

WinMainの引数にはプログラム名が入ってなかったので
無理かと思ってました。

902 名前:デフォルトの名無しさん :2006/04/10(月) 15:50:47
>>900
ありがとうございます。
こっちの方がちょっと簡単ですね。

903 名前:873 :2006/04/10(月) 22:18:22
>>887
結構長くなってしまうと思いますが良いでしょうか?
やっていることとしてはAPIのフックです。

>>888-895
確かにハンドルとポインタをごっちゃにして考えていました。
とりあえず一番の問題としてはエラーで強制終了されてしまうことです。
元々は正常に動作していたソースを書き換えていたので、
レジストリ関係の関数の取り扱いに特に問題は無いのではないかと思います。
現状だと「RegOpenKeyExA」の呼び出し以外には特に手を加えていません。

HKEY hkResult = NULL;
として「&hkResult」を渡してみましたが、やはり結果は強制終了でした。



904 名前:デフォルトの名無しさん :2006/04/11(火) 08:55:12
>>869
FindWindow()以外の関数きぼん
FireFoxだとGoogle - Mozilla Firefoxになるからウィンドウタイトルじゃ指定できないだす

905 名前:デフォルトの名無しさん :2006/04/11(火) 08:57:29
>>904
ウィンドウ・クラス名でも検索できるだろ

906 名前:デフォルトの名無しさん :2006/04/11(火) 09:46:21
>>905
ありがと、分かってきた。
クラス名の取得にはGetClassName()でウィンドウハンドルが必要
これは開始前にクラス名を取得して書き出しておくしかないのかな

907 名前:デフォルトの名無しさん :2006/04/11(火) 16:50:32
画面上の特定の範囲のスクリーンショットを撮るにはどうしたらいいですか?


908 名前:名無しさん@Linuxザウルス :2006/04/11(火) 17:11:40
>>907
GetDC(hwnd,0);

909 名前:デフォルトの名無しさん :2006/04/11(火) 17:20:03
>>908
それだと範囲内に複数のウィンドウが入っているときとか面倒じゃない?


910 名前:デフォルトの名無しさん :2006/04/11(火) 17:23:23
ウチのwinuser.hのGetDCには引数1つしかないんだが・・・

911 名前:デフォルトの名無しさん :2006/04/11(火) 17:26:08
>>907
GetDC(NULL)

912 名前:デフォルトの名無しさん :2006/04/11(火) 17:32:25
>>911
そんな手があったのか。
やってみる。


913 名前:デフォルトの名無しさん :2006/04/11(火) 22:56:18
質問です。
マウスジェスチャー的なものを作っているのですが、マウスフックした状態で
1)Explorerのウインドウ内で右ボタンを押す
2)マウスカーソルを移動してExplorerの範囲外に移動
3)右ボタンを離す
という操作をしたとき(ファイルを選択しない右ドラッグみたいな感じの操作)に、
3)のところでWM_RBUTTONUPが通知されません。
Spy++ではWM_RBUTTONUPが見えているので、どうにかすれば拾えるのはわかるのですが…

WM_RBUTTONUPでなくてもいいので、右マウスを離したことを検出する
方法を教えてください。

914 名前:デフォルトの名無しさん :2006/04/11(火) 23:09:52
>>913
マウスキャプチャしてる?

915 名前:デフォルトの名無しさん :2006/04/11(火) 23:40:00
>>914
できました!ありがとうございます。
猫は一通りやったんですが、このAPIは頭に入ってませんでした。

916 名前:デフォルトの名無しさん :2006/04/12(水) 03:30:22
ファイルハンドルを指定してリネームする関数ないですか?
changefilename(hFile, "c:\\foo.txt");
みたいなかんじで

917 名前:デフォルトの名無しさん :2006/04/12(水) 09:04:28
>>916
ハンドルがあると言うことは、ファイルを開いている事になる。
開いているファイルをリネーム出来るとでも?

918 名前:デフォルトの名無しさん :2006/04/12(水) 09:12:10
C標準でそういう関数あったな

919 名前:デフォルトの名無しさん :2006/04/12(水) 09:12:51
>>917
できないんですか? 随分仕様もないOSですね。

920 名前:デフォルトの名無しさん :2006/04/12(水) 09:40:17
>>919
うん、そーだね

921 名前:デフォルトの名無しさん :2006/04/12(水) 09:43:13
>>919
君が言うんならそーなのかもね

922 名前:デフォルトの名無しさん :2006/04/12(水) 13:19:56
imm32.dllの使い方に関して説明がある
日本語又は英語のサイトであって、
マイクロソフトMSDN以外のものをご存知でしたら、
どうか、どうか、教えてください。

(VC#ExpressPreview)

923 名前:デフォルトの名無しさん :2006/04/12(水) 13:21:33
>>917
開いててもリネームできるよ
(少なくともNT系はできる)

924 名前:デフォルトの名無しさん :2006/04/12(水) 13:23:48
.netを利用してワードを操作するアプリを作っております。
ワードの画面で、例えばCtrl+Rを押したときに、
ワードを操作するアプリ(wordobjectlibrary9.0)にその旨(Ctrl+Rが押下された)を
伝えることはできますでしょうか。

925 名前:924 :2006/04/12(水) 13:26:34
付記
WndProcで、メッセージを監視するという方法もありますが、
これだと、ワード画面が非アクティブなときに
押下されたCtrl+Rも前述したアプリに拾われてしまうので、
この方法は避けたいと思っております。

もっとも、ワード画面が非アクティブになったという事実を
前述したアプリに送ることができれば、もう少し選択の幅が
広がるかも知れませんが。

926 名前:デフォルトの名無しさん :2006/04/12(水) 14:49:12
keybd_event?

927 名前:デフォルトの名無しさん :2006/04/12(水) 15:21:51
>>924
グロ−バルフックとかじゃだめ?

出来るかどうかさっぱりわからないけど、Wordのアドインとして
自プログラムを登録しておいて、キー押下とかコマンドとか
拾えないかな?

928 名前:924 :2006/04/12(水) 15:30:08
>>927
ごめんなさい、さっきの文、間違えました。正しくは、

付記
「GlobalHotkey」で、メッセージを監視するという方法もありますが、
これだと、ワード画面が非アクティブなときに
押下されたCtrl+Rも前述したアプリに拾われてしまうので、
この方法は避けたいと思っております。

もっとも、ワード画面が非アクティブになったという事実を
前述したアプリに送ることができれば、もう少し選択の幅が
広がるかも知れませんが。




グローばるほっときーは、
半ば無差別にキーボードを監視するので、
ワード文書を操作しながら、平行して
オートキャドを操作する場合、不具合が生じてしまいまうのです。

929 名前:924 :2006/04/12(水) 15:32:20
以前、WndProcを試してみたこともありましたが、
えっと確かじゃないですけど、
そのときは、
メッセージをワードに食われてしまう結果、
メッせーじを監視できなかったような気がします。

immGetContextのメッセージを監視しようとしても、
WndProcで監視してもメッせージが出てこなかったような・・

ところで、グローバルホットキーと、グローバルフックって
同じことをさすのですか?

930 名前:924 :2006/04/12(水) 15:35:21
>出来るかどうかさっぱりわからないけど、Wordのアドインとして
>自プログラムを登録しておいて、キー押下とかコマンドとか
>拾えないかな?

それ、すごくいい!!(・∀・)
どうやるの・・・??

931 名前:924 :2006/04/12(水) 15:37:01
ちなみに、現行ソフトは、
HonliangSoft.Utilities
を使用しております。

932 名前:デフォルトの名無しさん :2006/04/12(水) 15:45:00
そんなローカルな名前出されても困る。ついでに間違ってる。あとあれはホットキーじゃなくてグローバルフック。
GetForegroundWindow とか使えない? どうやって Word をホストしてるんか知らないけど。

933 名前:924 :2006/04/12(水) 15:46:55
word文書においてCtrl+Rを押す。
すると、マクロAが起動する。
マクロAは、現在実行中のプログラム一覧を取得する。
当該プログラム一覧の中に、「myAppli.exe」というものがあるか
確認する。
もし「myappli」が2以上見つかったら、もしくは見つからなかったらreturn;
さもなくば、「myappli」に所定の処理をさせるようにメッせージを送る。
myappliは、何らかの方法でこのメッせージを受け取る。
myappliの変数wdAppli(Word.Applicationインスタンス)を介して、
ワード文書内に適宜の文字を追加する。WdTypeText(string str);

理想はこんな感じです
---------------
(a)現在実行中のプログラム一覧を取得 → VBAでやったことないから自信ないけど不可能ではなさそう。
(b)「myappli」に〜〜メッせージを送る。→送れるのか・・・
(c)myappliは、何らかの方法でこのメッせージを受け取る。→受け取れるのか・・・

この3点さえ解決すれば、OKです

934 名前:924 :2006/04/12(水) 15:50:17
>>932
僕がグローバルホットキーを使う方法は、こんな感じです。
///<summary>ホットキーが押された時に発生します。</summary>
public event HotkeyReceivedEventHandler HotkeyReceived;
///<summary>WndProcをオーバーライドします。</summary>
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x312 && HotkeyReceived != null)
{
//LParamの上位ワードが仮想キーコード、下位ワードが修飾キー
Keys key = (Keys)((int)m.LParam >> 16);
Modifiers modifiers = (Modifiers)((int)m.LParam & 0xFFFF);
HotkeyReceived(this, new HotkeyReceivedEventArgs(key, modifiers));
}
base.WndProc(ref m);
}

935 名前:デフォルトの名無しさん :2006/04/12(水) 15:52:24
ぶっちゃけると、このスレの住人は.NET Frameworkなんて知らない
旧世代の人間だから、別のスレで聞いた方がいいと思うぞw

っていうか、そもそも.NET Frameworkはこのスレではないと思うが。

936 名前:デフォルトの名無しさん :2006/04/12(水) 15:52:39
>>933
その myAppli 内に COM オブジェクトを実装して(COMサーバ化して)、
word の マクロの中ではそれを CreateObject して myAppli と通信するってのが一般的。

ATL なら簡単にできる。MFC だとどうやるんだっけ・・。APIだけだとちょっと難しい。

937 名前:924 :2006/04/12(水) 15:54:02
>どうやって Word をホストしてるんか知らないけど。

WordObjectLibrary9.0を使用しております。
http://support.microsoft.com/default.aspx?scid=kb;ja;316384

>GetForegroundWindow
>(a)現在実行中のプログラム一覧を取得 → VBAでやったことないから自信ないけど不可能ではなさそう。

ものすごく関連ありそうな、聞いたことあります。
現在実行中のプログラムをゲットする関数でしたっけ・・・それ
VBAでもimportdllとかすれば使えそうな・・・えっと、

938 名前:924 :2006/04/12(水) 15:56:16
>>932
>>936

孤独感から解放された気がしました。

939 名前:924 :2006/04/12(水) 15:59:11
>>932
getforegroundwindowは、
「120.現在操作中のウインドウのハンドルを取得する 」
というものですね。http://homepage1.nifty.com/MADIA/vb/API/GetForegroundWindow.htm

しかし、myappliは、ワード文書を作成中(即ち、Ctrl+Rを押下する時点)では、
非アクティブとなっております。

940 名前:デフォルトの名無しさん :2006/04/12(水) 16:06:10
>>939
> しかし、myappliは、ワード文書を作成中(即ち、Ctrl+Rを押下する時点)では、
> 非アクティブとなっております。
逆。myAppliがグローバルフック仕掛けてC-r押されたときにWordがアクティブか判断する。
がホストしてるWordのウィンドウハンドルを手に入れるのは無理な気がする。
モジュール名の取得とかで行けないこともないか?

>>933で良いのならそれで良さそうだが。
SendMessage WndProc

941 名前:924 :2006/04/12(水) 16:09:11
>>932
>>936

ATL
http://www.codeproject.com/atl/
ATL+Office2003+VC++
http://www.codeproject.com/atl/outlook2k3addin.asp
ATL+Word
http://www.shoeisha.com/book/hp/pc/office/Word/files/index-first-wa.html

他に、船出のお祝いとして、何か紹介いただけないでしょうか。

942 名前:924 :2006/04/12(水) 16:15:31
>>940
>逆。myAppliがグローバルフック仕掛けてC-r押されたときにWordがアクティブか判断する。
なるほど、よく理解できます。
これだったら、ワード文書の作成と並行して起動されているイラストレータ
をいじってるときに、イラストレータのショートカットであるCtrl+Rを
押しても、ワードがアクティブじゃなければ、WndProcプロシージャの中では
何もしなければいいんですものね。

でも、でも、ワード文書で日本語を入力しているときであって、
入力されている文字がまだ未確定の場合はどうなるでしょうか。
ワード文書はアクティブですが、文字が未確定(変換中を示す。)のときに、
myAppliがワード文書内に所定の文字を追加するようWdTypeText(String str)
を実行してしまうと、ワードばぐるんですよ
(この問題が発生しているので、私は他の手法を考えていたところだったのです)

943 名前:デフォルトの名無しさん :2006/04/12(水) 17:04:14
ちょっと本題から外れてしまうけど、ウチのWordで
ctrl+R押すと右揃えになるんだわ。参考までに。

あと、さっきも書いたけどアドインでメニュー項目を追加できると
思うので、ctrl+[何か]からメニュー項目起動で、自分の
コードを実行できそうな気がするんだけど、よくわからん…。

Word アドイン
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/deovrwordaddins.asp

参考までに:アドイン、テンプレート、ウィザード、およびライブラリ
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/deovraddinstemplateswizardslibraries.asp

944 名前:924 :2006/04/12(水) 17:17:18
>>943
どうもありがとう!

>ctrl+R押すと右揃えになるんだわ。参考までに。
デフォルトでは仰るとおりです。

945 名前:デフォルトの名無しさん :2006/04/12(水) 18:35:51
実行プログラムを開くとメールで開いたことを伝えるプログラム組みたいんだけど何方かわかる人いますか?

946 名前:デフォルトの名無しさん :2006/04/12(水) 18:40:15
socket使ってSMTP送ればいいじゃん

947 名前:デフォルトの名無しさん :2006/04/12(水) 18:44:55
http://www.kumei.ne.jp/c_lang/sdk3/sdk_228.htm
これなんですが自分の力量じゃ組めませんでした。

948 名前:デフォルトの名無しさん :2006/04/12(水) 18:50:02
まんまのコードが載ってるのに技量も糞も無いだろ

949 名前:デフォルトの名無しさん :2006/04/12(水) 18:51:22
カット&ペーストの技量が今ひとつなんだろう

950 名前:デフォルトの名無しさん :2006/04/12(水) 19:01:54
とゆうかよりにもよって猫かよ

951 名前:デフォルトの名無しさん :2006/04/12(水) 20:14:28
>>945
ウイルスでも組む気か?

952 名前:デフォルトの名無しさん :2006/04/12(水) 20:17:46
>>945
MessageBox( NULL, "xxx@xxxx.xx.xxに、開いたことをメールで通知して下さい。", "お願い", MB_OK );

953 名前:デフォルトの名無しさん :2006/04/12(水) 21:10:52
>>945
プロセス列挙かスナップショットでポーリング。
見つかったらCDOで送る。

ポーリングの間をすりぬけるケースを拾いたければ、、、知らん

954 名前:デフォルトの名無しさん :2006/04/12(水) 21:25:14
>>953
CreateProcessをフックすればいいんじゃない?

955 名前:デフォルトの名無しさん :2006/04/12(水) 22:11:52
WH_GETMESSAGEでメッセージフックしてるんですが、しばらく動かしてると
時々フックが外れて何も通知されなくなってしまいます。
このときマウス等の他のフックは動いているようです。

いろいろ探していてExplorer.exeが再起動したときなんかはフックが外れる
ようなことをどこかで見たのですが、対処方法まではわかりませんでした。
フックが外れたことを検出する方法と、その際の復旧方法について教えてください。

956 名前:デフォルトの名無しさん :2006/04/12(水) 22:18:05
>>955
さあ、さっぱりわからんけど、explorer.exeの再起動を
検知する姑息な方法として思いついたのは、
・PIDを覚えておいて定期的にチェック
・タスクトレイ常駐アプリはexplorer.exeの再起動を
 教えてもらえると思うので、それを利用

957 名前:デフォルトの名無しさん :2006/04/12(水) 22:40:34
PIDってProcessIDか
なんかピッドとかいうハンドルみたいなものがあると思ってた

958 名前:デフォルトの名無しさん :2006/04/12(水) 23:00:22
>>955
シェルが再起動した場合は、RegisterWindowMessage("TaskbarCreated") のメッセージが来る

959 名前:デフォルトの名無しさん :2006/04/12(水) 23:07:18
TaskbarCreatedって定数式じゃないからcaseに出来ないのが微妙に腹立つんだよな

960 名前:は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I :2006/04/12(水) 23:36:19 ?
>>1
>日本語版MSDN Online Libraryは不完全です
ってあるけど、本当だね。
FindFirstFileで英語版だとルートディレクトリも工夫次第で検索できることになっているのに
日本語版だと検索できないとしか書いてないという。

961 名前:デフォルトの名無しさん :2006/04/12(水) 23:52:27
>>960
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/findfirstfile.asp
ttp://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_findfirstfile.htm

同じことしか書いてない気がするが。どこのどの版のMSDNライブラリ?

962 名前:デフォルトの名無しさん :2006/04/13(木) 07:06:44
>>959
ものすごい勘違いしている気がする・・・

963 名前:デフォルトの名無しさん :2006/04/13(木) 07:45:43
>>962
よくわからんが
RegisterWindowMessage() … つか、関数の戻り値を case ラベルに利用する方法を教えてくれ。

964 名前:デフォルトの名無しさん :2006/04/13(木) 08:11:00
基本的にメッセージハンドラへの分岐に switch - case なんぞ使ってねえし

965 名前:デフォルトの名無しさん :2006/04/13(木) 09:00:03
フレームワークを使わないSDKオンリーのサンプルは
switch-case使ってるのがほとんどだけどね。

966 名前:デフォルトの名無しさん :2006/04/13(木) 09:14:39
空気読めよ

967 名前:デフォルトの名無しさん :2006/04/13(木) 13:48:18
これから勉強しようとしている者です。
Win32API作成するのに一番主流なのはMFCですか?

968 名前:デフォルトの名無しさん :2006/04/13(木) 13:51:53
Win32API を作るのは Microsoft しかできないと思うが。

969 名前:デフォルトの名無しさん :2006/04/13(木) 13:59:50
キーボードからの物理的なキーストロークは受け付けるけど、
SendInput でキーストローク送っても受け付けないウィンドウがあるんですが、
受け付けさせるのに何か良い方法ありませんでしょうか?

970 名前:デフォルトの名無しさん :2006/04/13(木) 14:00:04
MFCなんていらん
実力付けたきゃ全部自分で書け

971 名前:デフォルトの名無しさん :2006/04/13(木) 14:00:08
VBです。

972 名前:デフォルトの名無しさん :2006/04/13(木) 14:01:58
SetKeyStateみたいなの無い?
キーの入力状態を設定する関数

973 名前:デフォルトの名無しさん :2006/04/13(木) 14:02:56
SendKeyでUp/Downとか送っとけ

974 名前:デフォルトの名無しさん :2006/04/13(木) 14:15:27
KFCウマー(゚д゚)

975 名前:デフォルトの名無しさん :2006/04/13(木) 14:22:44
>>968
Win32APIアプリの間違いです。

976 名前:デフォルトの名無しさん :2006/04/13(木) 14:47:46
>>975
>>986なんて相手にするなよw

意地悪かバカかのどっちかだ。どっちにしてもかまってロクなことはないw
まあリアルで友達いないんだろうな。ここでかまってあげる優しさもありか( ´艸`)

977 名前:デフォルトの名無しさん :2006/04/13(木) 14:47:49
MFCは馬鹿には扱えないから

978 名前:デフォルトの名無しさん :2006/04/13(木) 14:50:15
馬鹿しか使わないの間違いだろwww

979 名前:デフォルトの名無しさん :2006/04/13(木) 15:01:27
馬鹿は「***を使う奴は〜」と言いたがる。

980 名前:デフォルトの名無しさん :2006/04/13(木) 15:37:33
とりあえず >>986 の出方に期待してみよう。

981 名前:972 :2006/04/13(木) 15:51:24
>>972
C++使ってるからむりぽ
Ctrl+Alt+Delに似たことをやりたいんだけど、何か無い?

982 名前:デフォルトの名無しさん :2006/04/13(木) 16:32:28
>>962
ハァ?バカは氏ね

983 名前:は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I :2006/04/13(木) 19:17:11 ?
>>961
VB6についてきたVS6版のMSDN

984 名前:デフォルトの名無しさん :2006/04/13(木) 19:46:04
VB6って8年ぐらい前じゃないか?

985 名前:デフォルトの名無しさん :2006/04/13(木) 21:36:53
>>981
やりたいことがわからんから多分外してるが
LockWorkstation

986 名前:デフォルトの名無しさん :2006/04/13(木) 21:37:45
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist
CPUは32ビットですけど。どのプラットフォームSDKをダウンロードしたらい
すか?
たくさんありすぎてわかりません。


987 名前:デフォルトの名無しさん :2006/04/13(木) 21:39:36
>>986
x86じゃね?

988 名前:デフォルトの名無しさん :2006/04/13(木) 21:45:12
987さん
ありがとうございます。
Microsoft Platform SDK for Windows Server 2003 SP1
というやつをインストールしましたが、
これのどこをみたらAPIのヘッダファイルをみることができるか
教えてもらえないでしょうか?



989 名前:デフォルトの名無しさん :2006/04/13(木) 21:45:33
まて、32bit環境で64bitのEXEを作成する気かもしれないだろ!

990 名前:デフォルトの名無しさん :2006/04/13(木) 21:47:32
そうなのか?小出しh(ry

991 名前:デフォルトの名無しさん :2006/04/13(木) 23:38:38
プラットフォームSDKをインストールしましたが。 
どこさがしてもヘッダファイルが見つかりませんが?
どこをみたらいいのでしょうか?

992 名前:デフォルトの名無しさん :2006/04/13(木) 23:50:49
見ようとするな。

993 名前:デフォルトの名無しさん :2006/04/13(木) 23:51:41
もちろんインストールしたドライブを*.hで検索とかはしたんだろうな?

994 名前:デフォルトの名無しさん :2006/04/14(金) 00:03:22
 ありがとうございます。わかりました。

995 名前:デフォルトの名無しさん :2006/04/14(金) 00:42:25
定数をVB.NET用定義にするにはどうしたらよいのでしょうか?
具体的なやり方を教えてください。

996 名前:デフォルトの名無しさん :2006/04/14(金) 00:47:19
それがWIN32APIに関する質問だと思うなら、居座り続けるがよい。

997 名前:デフォルトの名無しさん :2006/04/14(金) 02:23:04
定数の定数名をエクスプローラーに掛けてみましたがヒットしません。
これはどういうことが考えられるのでしょうか?

998 名前:SOURCE ◆tAo.kQ2STk :2006/04/14(金) 02:59:26
>>995
constじゃなかったっけ?

999 名前:デフォルトの名無しさん :2006/04/14(金) 04:02:21


1000 名前:デフォルトの名無しさん :2006/04/14(金) 04:37:59




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