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


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

Win32API質問箱 Build39
751 名前:デフォルトの名無しさん :2006/01/25(水) 14:49:09
CListViewのデストラクタがおかしいんじゃねの?

752 名前:デフォルトの名無しさん :2006/01/25(水) 16:52:11
解決にならないだろうけど・・・

if(listview!=NULL)
{
  delete listview;
  listview = NULL;
}

753 名前:デフォルトの名無しさん :2006/01/25(水) 18:34:00
>>745
止まるって、具体的にはどうなる?
delete が返ってこないということ?
それともそこでエラー?

754 名前:725 :2006/01/25(水) 19:55:24
制限ユーザでのレジストリーに書き込み(コンポーネントの登録)の件ですが

>729
>Windows XP なら manifest で出来る。
成功しました情報ありがとうございます。
http://www.microsoft.com/japan/msdn/windows/windowsxp/sidexsidewinxp.asp
このサイトが参考になりました。

>731
>>725>>727
HKEY_CLASSES_ROOT以下は制限ユーザーでも書き込めると思うが。
HKEY_CURRENT_USER以外は書き込みが出来ませんでした。

XPでは起動に成功を見たのですが、以前2000での起動が出来ません。
何方か解決方をご存じの方はいらっしゃいませんでしょうか?

具体的には、制限ユーザで自作したアプリをインストールし動作させようとしているのですが、
動作には、インストーラに同梱したコンポーネントが必要なのですがこのコンポーネントのシステムへの登録が
制限ユーザでは出来ずに、起動に失敗してしまいます。(regsvr32で登録エラーを起こしてしまいます)
以上です、よろしくお願いします。


755 名前:デフォルトの名無しさん :2006/01/25(水) 20:50:57
GetCursorInfoがエラーする。
compileは通るんだけど、実行すると戻り値が0で、ラストエラーは「パラメータが間違っています。」(コードは87)
ん〜、誰か教えてぇ〜〜〜


756 名前:デフォルトの名無しさん :2006/01/25(水) 20:55:26
cbSize

757 名前:デフォルトの名無しさん :2006/01/25(水) 21:34:32
>>755
パラメータが間違ってる、と親切に教えられてるのに、
何故、無視するのだね?


758 名前:デフォルトの名無しさん :2006/01/25(水) 22:31:36
>>745
そもそもnewは例外を投げるからNULLかどうかの比較は意味がない。
どうしてもやりたければstd::nothrow。
if ((listview = new(std::nothrow) CListView(hwndDlg)) == NULL)


759 名前:デフォルトの名無しさん :2006/01/25(水) 22:37:08
VC だか何だったかは new に失敗しても、例外を投げずに 0 を返した気がする。
なので、念のためチェックしといた方が良いと思う。

760 名前:デフォルトの名無しさん :2006/01/25(水) 22:41:20
>>759
744-745はBorland C++と書いてある。おそらく無料版だろう。
そいつのnewは例外を投げる。

761 名前:デフォルトの名無しさん :2006/01/25(水) 22:44:25
VC++6だな。
VC++2003だと、C++のヘッダをインクルードすると、例外を投げるようになるはず。

762 名前:デフォルトの名無しさん :2006/01/25(水) 22:46:07
>>760,761
ほほー、勉強になりました。
サンクス。

763 名前:740 :2006/01/25(水) 23:09:21
>>741-743
ありがとうございます。
見た感じですが、デスクトップの画面の大きさの
真っ暗なウィンドウがある感じです。
根拠は、半透明にしてから同様の方法で全てのウィンドウの透明度をなくした場合、
デスクトップが真っ黒になるからです。
"Program Manager"を調べてみます。

764 名前:740 :2006/01/25(水) 23:21:03
ウィンドウハンドルからキャプションを取得して、
"Program Manager"を持つウィンドウを除いたら解決しました!
ありがとうございました!

765 名前:デフォルトの名無しさん :2006/01/26(木) 00:45:51
printfでAとWが切り替わるのはどれになりますか?

766 名前:デフォルトの名無しさん :2006/01/26(木) 00:46:39
エスパーの方、出番です。

767 名前:デフォルトの名無しさん :2006/01/26(木) 00:50:30
ワロス、全然分かんねぇw

768 名前:デフォルトの名無しさん :2006/01/26(木) 00:52:47
wprintf, _tprintfとかをご所望ニカ?

769 名前:デフォルトの名無しさん :2006/01/26(木) 01:15:53
 _tsetlocale
 _tprintf


770 名前:デフォルトの名無しさん :2006/01/26(木) 06:24:48
仕事の関係でドイツ語版のWindowsXPを使っているんだけど、
テキストを入力するときに言語バーのところで日本語を選べるものと
選べない物があるんだけど、これってどういう風に作ると選べるように
なるかわかる人いる? 具体的にはIEのフォーム(URL入力欄はNG)や
Office系はOK。秀丸、EmEditor、xyzzyに始まりEclipse、VisualStudio等
ほとんどのテキストエディター系は入力不可。
正直仕事に支障が出ているので簡単なテキストエディタを作ろうと
思ってるんだけど、普通にTextBoxを配置しただけではやはり日本語は
選べないみたい。ヒントでもいいので何か情報求む。
スレ違いなら誘導お願いします。

771 名前:デフォルトの名無しさん :2006/01/26(木) 06:49:06
GlobalIMEがどうこう、と言う話はきいたことあるな。

772 名前:デフォルトの名無しさん :2006/01/26(木) 07:22:42
>>770
ざっくり見つけた限りだとこのへんか?

Techniques for Handling Input Languages in Win32
http://www.microsoft.com/globaldev/getWR/steps/WRG_kybrd.mspx#EVE

> by using Unicode edit controls or rich edit controls,
> you enable your application to handle multilingual text input.

773 名前:デフォルトの名無しさん :2006/01/26(木) 08:24:20
コントロールパネルの地域と言語のオプションでドイツ語追加して試してみたら(WinXPSP2)、
VC6.0は入力した文字が?になってだめだったけど、秀丸(5.13b2)、メモ帳、VS2003では入力できた。

774 名前:デフォルトの名無しさん :2006/01/26(木) 15:53:32
フォルダを開いたときなどに鳴るカチッっていう音は
プログラム上では、どうやって鳴らすんでしょう?

775 名前:デフォルトの名無しさん :2006/01/26(木) 16:08:30
OpenFolder

776 名前:デフォルトの名無しさん :2006/01/26(木) 16:44:11
既定のサウンド設定

777 名前:デフォルトの名無しさん :2006/01/26(木) 16:52:01
外してるような気がしつつMessageBeep

778 名前:デフォルトの名無しさん :2006/01/26(木) 17:02:51
WMCreateIndexerの使い方教えてください。
ASFファイルにインデックスをつけたいだけなのですが。

779 名前:デフォルトの名無しさん :2006/01/26(木) 17:49:17
ブラウザでエンコードを自動判別していますが、
あの処理ってどこから情報を取ってくるんですか?
ダウンロードしたhtmlを解析して?
それとも、HttpSendRequestに対応するフラグがあるの?

780 名前:デフォルトの名無しさん :2006/01/26(木) 17:59:31
・HTTPヘッダ
・BOM
・meta要素
・ファイルのバイト列の癖から類推

781 名前:デフォルトの名無しさん :2006/01/26(木) 18:01:39
・永年の勘

782 名前:デフォルトの名無しさん :2006/01/26(木) 18:04:52
>>779
参考資料
[IE5]文字セットと Internet Explorer 5 の自動選択機能について
http://support.microsoft.com/default.aspx?scid=kb;ja;413581

783 名前:774 :2006/01/26(木) 18:27:11
皆さん、ありがとうございます。
ttp://forums.belution.com/ja/vc/000/207/29s.shtml
のような記事を見つけたのですが、
レジストリから直接取得するしか無いんでしょうか。
とりあえずは、レジストリからの値の取得の方法を調べねば。

784 名前:デフォルトの名無しさん :2006/01/26(木) 19:01:47
特定のキー(たとえばCtrl-Spaceとか)を押すと、
自作のウインドウアプリケーション A (起動済みでバックグラウンドかアイコンになってる)が
フォアグラウンドかつフォーカスがあたるようにしたいのですが、
A の中でどういうAPIを使って操作をしておけばいいでしょうか。

785 名前:デフォルトの名無しさん :2006/01/26(木) 19:10:40
RegisterHotKey でできる。

WM_HOTKEY を受け取ったら、フォアグラウンド & フォーカスの処理をすれば良い。

786 名前:デフォルトの名無しさん :2006/01/26(木) 19:19:13
グローバルフック

787 名前:デフォルトの名無しさん :2006/01/26(木) 19:20:05
激しく右フック

788 名前:デフォルトの名無しさん :2006/01/26(木) 20:00:08
ストリームの一覧を所得したいです

789 名前:デフォルトの名無しさん :2006/01/26(木) 20:04:51
そうですか
俺は五億円ほど所得したいです
お互いがんばりましょう

790 名前:デフォルトの名無しさん :2006/01/26(木) 20:06:37
>>789
つ 所得税

791 名前:デフォルトの名無しさん :2006/01/26(木) 21:02:18
>>790
与えてどうするよ

792 名前:デフォルトの名無しさん :2006/01/26(木) 21:03:32
コンソールが勝手に閉じて動作が分かりません
どうすればとまるの?

793 名前:デフォルトの名無しさん :2006/01/26(木) 21:07:57
>>792
スレ違い

794 名前:デフォルトの名無しさん :2006/01/26(木) 21:09:26
>>792
なんのこっちゃ?
VC6ならCtrl+F5とか

795 名前:デフォルトの名無しさん :2006/01/26(木) 21:10:50
あ、VC6じゃなくてもか
VCならCtrl+F5

796 名前:デフォルトの名無しさん :2006/01/26(木) 21:16:07
昔懐かしのgetch()

797 名前:デフォルトの名無しさん :2006/01/26(木) 21:21:44
apiと関係あるか?

798 名前:デフォルトの名無しさん :2006/01/26(木) 21:22:15
>>788
ストリームのバックアップと列挙
http://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.asp#ntfs5_topic5

http://homepage3.nifty.com/k-takata/diary/2005-02.html#04

799 名前:779 :2006/01/26(木) 21:52:27
>>780
>>781
>>782
ありがとうございます!
探ってみまーす!


800 名前:デフォルトの名無しさん :2006/01/26(木) 22:29:22
>>736
thx

801 名前:デフォルトの名無しさん :2006/01/26(木) 22:32:45
>>799
IMultiLanguage2::DetectInputCodepage

802 名前:799 :2006/01/27(金) 08:18:50
>>801
インターフェイスがあるんですねー。
調べてみます。

ありがとうございます!

803 名前:778 :2006/01/27(金) 09:34:44
Windows Media Format SDKをインストールして
サンプルのdscopy.cppを↓のように書き換えました。

int __cdecl _tmain(int argc, TCHAR *argv[])
{
  USES_CONVERSION;

  // Initialize COM
  HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
  if (FAILED(hr))
    return hr;

  WCHAR wszTargetFile[MAX_PATH];
  MultiByteToWideChar(CP_ACP, 0, "c:\\hoge.asf", -1,
   wszTargetFile, NUMELMS(wszTargetFile));

  hr = IndexFileByFrames(wszTargetFile);

  CoUninitialize();
  return hr;
}

実行すると↓のエラーが出ます。

Indexing Failed (hr=0x8000ffff)!
Press any key to continue

何かわかる人はいらっしゃいませんでしょうか?

804 名前:デフォルトの名無しさん :2006/01/27(金) 12:55:20
居るんではないでしょうか

805 名前:デフォルトの名無しさん :2006/01/27(金) 12:57:17
>>803
その問題とは関係ないけど:

USES_CONVERSION 使えるなら IndexFileByFrames( A2W("c:\\hoge.asf") ); でいいし、
さらにこんなテストなら IndexFileByFrames( L"c:\\hoge.asf" ); でも十分だと思う。

806 名前:デフォルトの名無しさん :2006/01/27(金) 13:29:00
指定パス下を一括で読み取り専用解除する方法ってないですか?

1つ1つSetFileAttributesするしかない?

807 名前:デフォルトの名無しさん :2006/01/27(金) 13:34:57
system( "attrib -R * /S /D" );

808 名前:デフォルトの名無しさん :2006/01/27(金) 13:52:04
Beep() って鳴らしつづけるの無理?

809 名前:デフォルトの名無しさん :2006/01/27(金) 17:44:35
while( 1 )
{
    Beep( 100, 10000 );
}

810 名前:778 :2006/01/27(金) 17:49:02
CopyASF()を呼べばインデックスをつけてくれるようですが
再エンコードするみたいで時間かかりますね。
インデックスだけつけたいのですが、困りました。

811 名前:デフォルトの名無しさん :2006/01/27(金) 17:57:51
>>809
説明が足りなかった。
非同期で鳴らし続けるってこと。
しかもそれじゃ10秒ごとにプチプチ言うよ。
途中で止められないし。

812 名前:778 :2006/01/27(金) 18:03:38
昔は
10 BEEP 1
でよかったね。

813 名前:デフォルトの名無しさん :2006/01/27(金) 18:40:40
>785,786
RegisterHotKeyとグローバルフックの両方を試して、上手くいきました。
グローバルフックでは、キーを押しても反応しないアプリケーション
(キー入力を吸い取ってる?)があるようなので、
今回はRegisterのほうを使います。ありがとうございました。

814 名前:デフォルトの名無しさん :2006/01/27(金) 19:47:22
ウィンドウをクライアント領域のサイズを指定して生成することができる関数ってないでしょうか?
横スクロールゲームなので指定サイズのクライアント領域を持ったウィンドウが必要だす

815 名前:デフォルトの名無しさん :2006/01/27(金) 20:14:14
>>814
AdjustWindowRect

816 名前:デフォルトの名無しさん :2006/01/27(金) 20:31:07
1. アクティブなウィンドウをデスクトップの一番下に沈めて
2. 1.の後一番手前に来たウィンドウをアクティブにする

というユーティリティを作りたいんですが、2.のウィンドウを検索する方法がわかりません。
どう書けばいいんでしょうか?

817 名前:デフォルトの名無しさん :2006/01/27(金) 20:37:46
>>815
ありがとうございました

818 名前:デフォルトの名無しさん :2006/01/27(金) 21:26:32
>>816
GetWindowのGW_HWNDNEXTでいいんじゃない?

それと、Win98、Win2000以降はSetForegroundWindowに
制限があるので要注意。

819 名前:デフォルトの名無しさん :2006/01/27(金) 21:55:39
>>818
MSDNドキュメントを鵜呑みにしたか?
ドキュメントにあるような制限は実際にはない。

820 名前:デフォルトの名無しさん :2006/01/27(金) 22:05:25
http://techtips.belution.com/ja/vc/0012/

821 名前:デフォルトの名無しさん :2006/01/27(金) 22:14:55
>>819
分かってないのはお前の方だ。あの制限は全部ちゃんとある。
しかし、フォアグラウンドプロセスからSetForegroundWindowを
呼んだ場合は、普通に実行できる。(これも書いてある)
あの制限は主に、フォアグラウンドではないプロセスから
SetForegroundWindowを呼んだ場合のもの。

816のやろうとしている事は明らかに、SetForegroundWindowの
制限に引っかかる。

822 名前:デフォルトの名無しさん :2006/01/27(金) 22:18:13
>>821
本当に自分の目で確認したのか?
実際にテストコードを書いて試したか?

823 名前:デフォルトの名無しさん :2006/01/27(金) 22:38:45
福井県ってほんとに実在するのかな?
友達に訊いてまわったけど自分の目で福井県を見たやつは
一人もいないんだ。

824 名前:デフォルトの名無しさん :2006/01/27(金) 22:42:50
目で見えないから存在しないというのは
愚かな思い違いだ

825 名前:デフォルトの名無しさん :2006/01/27(金) 22:53:23
SetForegroundWindowうまくいかんのよねえ
HWND_TOPMOSTで代用してるけど
これはこれで色々問題あって

826 名前:デフォルトの名無しさん :2006/01/27(金) 22:54:43
>>821の色よい返事はまだ?
(・∀・)ニヤニヤ

827 名前:デフォルトの名無しさん :2006/01/27(金) 22:56:38
>>819の根拠ってなんなんだろ。
流出ソースでも読んだのかな。

漏れが試した範囲ではXXXだから、
誰のどのPCでもそんな制限など付かないはずニダ
とかじゃないだろうな・・・

828 名前:デフォルトの名無しさん :2006/01/27(金) 23:13:00
カスタマイズ系のソフトで
HKEY_CURRENT_USER\Control Panel\Desktop\ForegroundLockTimeout
がいじってあったりすると「ドキュメントにあるような制限は実際にはない」と思えちゃうかも。

829 名前:デフォルトの名無しさん :2006/01/27(金) 23:22:38
あと実験コードちょろっと書いて、デバッガで実行すると
>?フォアグラウンドプロセスがデバッグ中である。
により、制限が無いように見えちゃうとか。

830 名前:デフォルトの名無しさん :2006/01/27(金) 23:30:50
>>827-829
自分で試したのか、お前ら?

831 名前:デフォルトの名無しさん :2006/01/27(金) 23:31:49
つまり、福井県は実在するの?しないの?

832 名前:デフォルトの名無しさん :2006/01/27(金) 23:33:24
>>830
君は試してないのかい?

833 名前:デフォルトの名無しさん :2006/01/27(金) 23:37:25
>>825
うまくいかないってのが、タスクバーでボタンが点滅するだけ
っていうのならば、それがSetForegroundWindowの制限。
820のリンク先にその制限を突破するコードがある。

>>819,822,826,830,832
いい加減痛いから、それ以上恥の上塗りをするのはやめた方がいいぞ。

834 名前:デフォルトの名無しさん :2006/01/27(金) 23:39:02
>>830
830ha
ドキュメントに「XXXはダメ」って書いてあっても、
自分の環境で試してOKだったら行うのかい?

漏れはそんなことしたこと無いよ。
逆にドキュメントでOKとなっていても、
試してダメ⇒回避コード作成ってのはあるけど。

835 名前:デフォルトの名無しさん :2006/01/27(金) 23:46:04
スレ違いかもしれませんが質問させてください。
ファイル(アイコン)のドラッグドロップはDragAcceptFiles()使って
WM_DROPFILES取れば得られるみたいですけど、
リッチテキストのテキスト等のドロップはどういう仕組みで行われているのでしょう?
visualstudioのコードエディタとMSNメッセンジャの入力フォーム間とかでもD&Dできるので
アプリ内じゃない処理が行われてると思うんですが。
他のアプリのリッチテキストからのD&Dを許可する方法なぞあれば教えてください

836 名前:デフォルトの名無しさん :2006/01/27(金) 23:49:10
('A`)

837 名前:デフォルトの名無しさん :2006/01/27(金) 23:52:23
>>835
RegisterDragDrop


838 名前:デフォルトの名無しさん :2006/01/28(土) 00:11:36
drug & drop out

839 名前:デフォルトの名無しさん :2006/01/28(土) 03:03:42
どうしても思い出せないので質問させて下さい。
"C:\test1\test2\test3\" というディレクトリを作りたいとき、
test1 や test2 の存在しなくても、一発で test3 までの
ディレクトリを作成してくれるAPIがあったと思うのですが、
どなたか教えて頂けないでしょうか?
確か、winhelp.dll の MakeSureなんとかかんとか API だったと思うのですが。。。

840 名前:デフォルトの名無しさん :2006/01/28(土) 03:04:27
こないだ出たばっかりだな

841 名前:839 :2006/01/28(土) 03:07:51
>>840
すいません。719で既出でした。
スレ汚し失礼しました。

842 名前:デフォルトの名無しさん :2006/01/28(土) 06:58:06
>>835
OLEドラック&ドロップ

843 名前:デフォルトの名無しさん :2006/01/28(土) 07:43:48
9xでCreateRemoteThread()と同じことをやるにはどうしたらいいのでしょうか?

844 名前:デフォルトの名無しさん :2006/01/28(土) 08:53:30
>>843
等価な処理は無理。

845 名前:デフォルトの名無しさん :2006/01/28(土) 13:11:19
>>843
多分無理と思う。DLLインジェクションがやりたいのなら、SetWindowsHookexでもできると思うが。
多分9x系で使えるはず


846 名前:デフォルトの名無しさん :2006/01/28(土) 15:55:14
スタンバイから復帰するためのAPIってありますか?


847 名前:デフォルトの名無しさん :2006/01/28(土) 16:09:52
>>846
スタンバイ状態の時はアプリケーションは動作していないと思うが?

848 名前:デフォルトの名無しさん :2006/01/28(土) 17:16:26
ワロスww

849 名前:デフォルトの名無しさん :2006/01/28(土) 18:09:10
>>846
一応、SetWaitableTimerで出来るが、お前さんのやりたいことは
これでいいのか?

850 名前:デフォルトの名無しさん :2006/01/28(土) 18:27:35
それくらい推察しないと
エスパーとしては失格です。

851 名前:デフォルトの名無しさん :2006/01/28(土) 19:06:50
既に起動してる別のプロセス(自作)にちょこっと仕事させて、処理が終わり次第
自分が復帰する状況を実現したいです。安易には

// 何か処理
SendMessage(...); // 別プロセスに投げる。ハンドラは記述済
// 何か処理

というのを思いつきます。他に名前付きイベントオブジェクトで

// 何か処理
SignalObjectAndWait(...); // 別プロセスを起こし、処理終了後SetEventなど呼ぶ
// 何か処理

などともできそうです。どう実装してもいいんですが、なるべく
パフォーマンスを良くしたいです。
どちらかと言われれば、どちらを選べばよいでしょうか?

852 名前:846 :2006/01/28(土) 20:35:42
>>849
それです!ありがとうございます。
エスパー合格です。

853 名前:デフォルトの名無しさん :2006/01/28(土) 20:38:00
>>847-848
おいおい何年前のPCの話してんのよw
スタンバイから(RTC等で)復帰なんてAPMの当時から実現してるってw
でなきゃタスクスケジューラは魔法か何かかw

854 名前:デフォルトの名無しさん :2006/01/28(土) 20:45:26
そういうレベルの話はしてないと思うよw

855 名前:デフォルトの名無しさん :2006/01/28(土) 20:48:41
そういう話じゃないの?

856 名前:デフォルトの名無しさん :2006/01/28(土) 20:50:53
おいおい何のレベルの話してんのよw

857 名前:デフォルトの名無しさん :2006/01/28(土) 20:52:22
そういうことで、はい次、次。

あ、Wake on LAN でも起こせるよ。

858 名前:108 :2006/01/28(土) 20:52:23
>>846 852
おまえ>>105でも同じ質問してたろ
108で答えてんのに無視しやがって
梨の礫だけはやめろ

859 名前:デフォルトの名無しさん :2006/01/28(土) 20:53:55
もう回答も出てこれにて一件落着なんだから、
自分が賢いことを証明する為に言い争うのはやめれ。

860 名前:846 :2006/01/28(土) 20:55:45
別人です。すみません。
過去の発言を見ないで質問したためこんなことになりました。

861 名前:デフォルトの名無しさん :2006/01/28(土) 20:56:49
>>846
プッw
言いがかりww

862 名前:デフォルトの名無しさん :2006/01/28(土) 20:57:39
>>846>>858
修正

863 名前:デフォルトの名無しさん :2006/01/28(土) 21:04:39
>>860
あ、そーでしたか。こちらこそ失礼しました。
MSDNのサンプルで分ると思うけど
「ロック音」ってオープンソースのアプリあるから
それ参考になるかもよ。

>>861-862
どこのスレだか忘れたけど
かなり前にも同じ質問の回答で無視されたもんで、つい


864 名前:846 :2006/01/28(土) 21:22:37
サンプルまで教えていただきありがとうございます。

865 名前:デフォルトの名無しさん :2006/01/29(日) 00:42:16
このソースでファイルを開くダイアログが出ないのですが、何が原因なのでしょうか。

-----

OPENFILENAME ofn;
char szFileName[MAX_PATH] = "*.txt";
char szFile[MAX_PATH] = "";

memset( &ofn, 0, sizeof(ofn) );

ofn.lStructSize= sizeof(ofn);
ofn.hwndOwner= hWnd;
ofn.lpstrTitle= "ファイルを開く";
ofn.lpstrFilter= "テキスト文書 (*.txt)\0Perlスクリプト (*.cgi)\0*.cgi\0すべてのファイル (*.*)\0*.*\0\0";
ofn.lpstrFile= szFileName;
ofn.lpstrFileTitle= szFile;
ofn.nMaxFile= MAX_PATH - 1;
ofn.Flags= OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt= "txt";

GetOpenFileName(&ofn);

866 名前:デフォルトの名無しさん :2006/01/29(日) 00:47:55
>>865
コピペで出るが他に何かおかしなことしてないか?

867 名前:デフォルトの名無しさん :2006/01/29(日) 01:00:55
>>865
Win2000+VCならそのコードで普通に表示されたよ。

おそらくlStructSizeがらみの問題では?
ここちょっとややこしいんだよね。
↓こんなの一応貼っとくけど
ttp://homepage3.nifty.com/aokura/tips/trouble.html


868 名前:デフォルトの名無しさん :2006/01/29(日) 08:38:07
BCC5.5.1でもコピペでちゃんと動いた罠

869 名前:デフォルトの名無しさん :2006/01/29(日) 11:00:17
>>816
そのウインドウ切り替えをしたいときに
http://techtips.belution.com/ja/vc/0012/
の例のように
SystemParametersInfo( SPI_SETFOREGROUNDLOCKTIMEOUT,0,(LPVOID)0,0);
するのではなく、あなたのアプリケーションをインストールするときに
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)0, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
すべきだどMicrosoftは言っています。
そういうわけで
http://techtips.belution.com/ja/vc/0012/
は完璧な回答ではないと思います。

http://support.microsoft.com/kb/97925/ja
Windows 2000 では、呼び出し元のスレッドでフォアグラウンド ウィンドウを
変更できない限り、SystemParametersInfo の呼び出しが失敗するので、
セットアップまたはパッチ アプリケーションから呼び出さなければなりません。


870 名前:デフォルトの名無しさん :2006/01/29(日) 12:11:12
関連づけを変更して自分のソフトで開くようにしたいのですが、
レジストリをいじるのだと思いますが、どのようにやればよいのでしょうか?方法を教えてください。

871 名前:867 :2006/01/29(日) 12:21:04
>>868
そっちのOSは2000かXPなんでしょ。
commdlg.hと867のリンク先とttp://diarynote.jp/d/59398/の中ほどの項をよく読んでみてよ。
できればWindows2000発表前の古いSDK(VC6付属のとか)のcmmdlg.hも。
Windows2000で構造体のサイズが拡張されたけど
拡張後のサイズ88で9xやNTで動かそうとしたとき起こる。
なのでBCCに限らず、VCでも起こりうる。
(フリーズするのではなくて、表示されずにそのままスルーされる。)
865の実行環境は9xかNTなのでは?

>>865
とりあえず
lStructSize=OPENFILENAME_SIZE_VERSION_400;とするか
#define _WIN32_WINNT 0x0400としてみてよ
それで駄目なら他の問題だ。

872 名前:デフォルトの名無しさん :2006/01/29(日) 12:22:59
>>869
英語版も合わせてよく読め。SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE を
指定するのは、SetForegroundWindowの動作を、95,NT4と同じようにするために
アプリのインストール時に恒久的に変更する場合のことだ。

873 名前:デフォルトの名無しさん :2006/01/29(日) 13:02:25
pingツールを作成したいのですけど、(正確にはICMPプロトコル使用のクライアントソフトです)
知識が足らないばかりかソケットの作成はsocket関数で行い
インターネットの場合引数にAF_INET、TCPならSOCK_STREAM ...
程度の事しか判りません。

どこかWinSockでの指針を示しているサイトはないでしょうか・・

874 名前:デフォルトの名無しさん :2006/01/29(日) 13:05:44
icmp.dll

875 名前:デフォルトの名無しさん :2006/01/29(日) 13:13:54
>>874
ありがとうございます。ちと勉強してきます

876 名前:デフォルトの名無しさん :2006/01/29(日) 15:40:30
>>870
「関連付けを変更するためには、レジストリをどのように変更すればよいか」
というのは、AIP全く関係ないのでスレ違い。

レジストリを操作するAPIは適当にググったりMSDN調べたりすればすぐわかる。

877 名前:デフォルトの名無しさん :2006/01/29(日) 16:17:17
ビジネスソフト板のExcel総合相談所 40スレから誘導されてきました

環境:WinXP,Excel2002VBA

POSTメソッドで検索した結果(書籍情報)を、Excelの表に書き下ろすマクロを作っています。
WebBrowser.Documentプロパティを使うと簡単なのですが、HTMLの表示が余計なので
WebBrowserを介さずに、直接DOMオブジェクトを取得したいと考えています。

いろいろ調べたところ、
- MSXML.DOMDocumentで、POSTして読み込んだXMLのDOMを取得できる
- MSXML.XMLHTTPで、POSTして読み込んだHTMLのソースを取得できる
- MSHTMLで、URL指定して読み込んだHTMLのDOMを取得できる
というところまで分かった(実行できた)のですが、
POSTして読み込んだHTMLをDOMにする方法が見つかりません
ご教示くださいますよう、お願いいたします。


878 名前:デフォルトの名無しさん :2006/01/29(日) 17:00:57
ExcelのマクロにAPIを直接使用できるの?

879 名前:デフォルトの名無しさん :2006/01/29(日) 17:07:55
>>876
で、どのスレが最適なんですか?

880 名前:デフォルトの名無しさん :2006/01/29(日) 17:18:38
>>878
はい。おそらくものによるんだと思いますが、VBE(エディタ)の「参照設定」メニューで
Microsoft XML v3.0などを選択してearly bindingしたり
Set obj = CreateObject("MSXML2.XMLHTTP")のようにlate bindingしたりして
そのままobj.openとかobj.sendとか使うことができます。

881 名前:デフォルトの名無しさん :2006/01/29(日) 17:31:05
>>878
できるよ。

>>880
それはActiveXだね。

882 名前:デフォルトの名無しさん :2006/01/29(日) 17:38:57
WinHTTPでURLとPOSTDATAを指定して、ファイルに保存して、
そのファイルをURLと指定して、MSHTMLに食わせるとか?

883 名前:デフォルトの名無しさん :2006/01/29(日) 18:05:30
>>870
良く知らんけどぐぐったらこんなんが出て来た。
http://sgry.sakura.ne.jp/articles/fileassociation.html
> Windows XP で新しくなった関連づけシステムについて
> 調べてわかった事を書いていきます

884 名前:865 :2006/01/29(日) 19:00:00
#define _WIN32_WINNT 0x0400
で直りました。
ありがとうございました。

885 名前:デフォルトの名無しさん :2006/01/29(日) 20:39:25
>>884
GetOpenFileNameはそれで済むかもしれんが
defineすることによる他への影響は??

886 名前:デフォルトの名無しさん :2006/01/29(日) 21:02:15
BackupReadの使い方を教えてください

887 名前:デフォルトの名無しさん :2006/01/29(日) 21:34:13
http://www.google.co.jp/search?svnum=10&hl=ja&lr=lang_ja&q=BackupRead%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9&ie=UTF-8&sa=N&tab=dw

888 名前:デフォルトの名無しさん :2006/01/29(日) 21:58:53
現在WindowsXP、VisualC++で入力支援系のプログラムを書いています。
'a'〜'z','0'〜'9'をRegisterHotKey()で登録し、
WM_HOTKEYが来たら自分自身をSetWindowPos()、SetFocus()で
アクティブにしたうえで、Hotkeyを解除、その先は通常に入力〜と言った感じで
任意のエディタやアプリケーションに対する入力に被せています。

しかし、これだと最初の1文字の入力がHotkeyとして食われてしまうため、
アクティブになった直後にkeybd_eventで同じ入力を送って補完するようにしています。

自分のマシンだとこれで上手くいくのですが、
他のマシンで試すと、なぜかkeybd_eventが無視されてしまい、最初の一文字が入力されません。
SendInput()も試してみましたが同様でした。

また、他の部分でkeybd_eventを実行してみたら正常に動作しています。
フォーカスを切り替えた直後のkeybd_eventに問題があるようです。
ただ、SetFocus()とkeybd_eventのSleep()を噛ましてみてもダメでした。
何かいい解決策はありますでしょうか。

対象のマシンも同様にWindowsXPでパフォーマンスは少し下くらい、
VC++は入っていませんが、.netのSDKやらplatformSDKやらが入っています。

889 名前:デフォルトの名無しさん :2006/01/29(日) 22:35:47
>>888
キーボード設定のリピート入力時間設定が大きく違うとかいうオチ?

890 名前:デフォルトの名無しさん :2006/01/29(日) 23:03:01
>>885
それが心配なら#define _WIN32_WINNT 0としてしまえばよい。

俺は大抵それに加え_WIN32_WIDOWSと_WIN32_IEも0にしている。

891 名前:デフォルトの名無しさん :2006/01/29(日) 23:38:47
プリントスクリーンと同様のことが出来るAPIってあります?
自分のPCだとプリントスクリーン経由で画像のキャプチャーをすると失敗することがあって困ってます・・・

892 名前:・∀・)っ-○●◎- ◆Pu/ODYSSEY :2006/01/29(日) 23:43:14
>>891
動画とかはわざとキャプチャ不能にしてることがあるよ。


GetDC() で対象ウィンドウ(NULLを指定すればデスクトップ全体)のDCを取得して
CreateCompatibleDC()してCreateCompatibleBitmap()

893 名前:デフォルトの名無しさん :2006/01/29(日) 23:44:41
質問です。
同じプログラム内で2度以上PostQuitMessageが呼ばれるのは問題ないのでしょうか??
用途は、2枚目のウインドウを破棄するときに、メインとは違うところで行われているディスパッチメッセージを抜けたいのです。
PeekMessageにウインドウハンドルをいれて監視してるのですが、WM_DESTRYやWM_QUITやWM_CLOSEが捕獲できませんでした。
PeekMessageのウインドウハンドルをNULLにした場合でも結局WM_DESTRYやWM_CLOSEは捕獲できませんでした。
こういう使い方って問題ないのでしょうか?

894 名前:デフォルトの名無しさん :2006/01/29(日) 23:45:21
GetDC

895 名前:・∀・)っ-○●◎- ◆Pu/ODYSSEY :2006/01/29(日) 23:49:09
>>893
PostQuitMessageを送るとメッセージループが終了するんで、それ以降メッセージ処理しようがない気が。。。。

896 名前:デフォルトの名無しさん :2006/01/29(日) 23:49:38
>>892>>894
ありがとうございます。


897 名前:デフォルトの名無しさん :2006/01/29(日) 23:53:08
>>889
設定調べてみましたが、両方とも全く同じデフォルト値のままでした

898 名前:デフォルトの名無しさん :2006/01/30(月) 00:20:23
>895
>PostQuitMessageを送るとメッセージループが終了するんで
直ぐには終わらない。WM_QUITは優先順位がものすごく低いから、
キューに貯まったメッセージが全部消えて無くなるまではやってこない。

899 名前:デフォルトの名無しさん :2006/01/30(月) 00:21:19
>>895
レス感謝!
メッセージ処理をしているところが2箇所あるんです。
えーっと、windowsにはscanf等の代わりとなるようなGUIの入力ダイアログがありません。
なので、自作しようと思って、表示とかは問題なくできたんですけど、(createwindowexでコントロールを貼り付けた。)
一つの関数に押し込めて便利に使いたいので、
その関数の中で専用のメッセージ処理を行いたいのです。
それで、その専用のメッセージ処理から抜ける際に何をフラグにして抜けるか非常に悩みまして、
一応、WM_QUITをフラグにしたんです。
で、WM_QUITを生成するためにはPostQuitMessageを呼ぶことになってしまって・・・。
こんな感じで大丈夫なのかと思って質問しました。
ぶっちゃければ、2枚目以降のウインドウを破棄したときに最後に呼ばれるメッセージがわかれば問題ないと思いますが、検討がつきません。

なんか妙案ありませんか??

900 名前:899 :2006/01/30(月) 00:25:34
ああ、そうだ。
一応これでも今のところは意図の通り動いてはいます。
が、ちょっと挙動に不安がのこるので非常に気になっています。

901 名前:デフォルトの名無しさん :2006/01/30(月) 00:34:11
>>899
そういうときは普通モーダルダイアログを使う。

902 名前:デフォルトの名無しさん :2006/01/30(月) 00:48:05
>>901
あー、ダイアログか。
うーんあんまり使ったことないので候補から外れていました。
その手も模索してみようと思います。
レス感謝。

やっと寝れます。=D

903 名前:デフォルトの名無しさん :2006/01/30(月) 01:17:50
>>892
>動画とかはわざとキャプチャ不能にしてることがあるよ。
それ、単にオーバーレイ表示なだけな気が‥‥それ

904 名前:デフォルトの名無しさん :2006/01/30(月) 03:22:44
WM_DESTROYとWM_CLOSEとWM_QUITの違い分からないのですが
教えてください!あと、終了するときはDestroyWindow()とCloseWindow()
とPostQuitMessage(0)とexit(0)のどれが本当は正しいんですか?
(exit(0)が一番楽だけど・・・)

905 名前:デフォルトの名無しさん :2006/01/30(月) 03:38:00
>>904
WM_DESTROY:ウインドウが消滅し始めるとき
WM_CLOSE:ユーザーがウインドウを閉じようとしたとき(Xを押したとき、とか)
WM_QUIT:アプリケーションが終了しようとするとき

ウインドウとアプリケーションとの区別が付けば分かるかな?
DestroyWindowとCloseWindow、PostQuitMessageとexitの関係も同じようなもん。
またウインドウのメッセージループを1つのスレッドと考えると、
それを終らせるメッセージをWindowsに投げるのがPostQuitMessage
普通に強制終了させるのがeixtかな?

1アプリで複数ウインドウのソフト作ったらわかるかも。
まぁMSDN嫁。

906 名前:デフォルトの名無しさん :2006/01/30(月) 03:44:37
>>888
そんな変なことするより、RegisterHotKeyを使うのを
やめた方がいいかと。

>>904
WM_CLOSEはウィンドウの閉じるボタンが押された直後等に
送られてくるメッセージ。まだこの時点では閉じるのを拒否
することができる。(ファイルを保存するか聞くのはここ)

WM_DESTROYはウィンドウが破棄される直前に送られてくる。
もうこの時点では後戻りはできない。
後始末等が必要なときは、ここで処理するのが普通。

WM_QUITは最後、これでおしまいってときに送られてくる。

普通はWM_DESTROYもWM_QUITもアプリケーションから直接
送ったりはしない。DestroyWindow(), PostQuitMessage()を使う。

CloseWindow()というAPIはウィンドウを閉じるのではなく、
最小化するだけなので全然関係ない。

907 名前:デフォルトの名無しさん :2006/01/30(月) 04:18:36
>>905-906
即スレありがとうございます!謎が解けました。
これで今日も眠れます!

908 名前:デフォルトの名無しさん :2006/01/30(月) 10:00:24
>>905
> PostQuitMessageとexitの関係も同じようなもん

全くの別物な訳だが。

PostQuitMessage : 指定されたスレッドが自らの終了を要求したことをシステムに伝えます。
exit : C標準関数で、プロセスを終了する。mainでのreturnはこの処理と等価。

909 名前:デフォルトの名無しさん :2006/01/30(月) 12:41:59
APIなのかツールなのかわかりませんが
パフォーマンステストで実行前に
Winのディスクキャッシュをクリアしたいんですが
どうすればいいんでしょうか?
メモリ分のダミーファイルを読み込むだけでいいんでしょうか?

910 名前:デフォルトの名無しさん :2006/01/30(月) 16:26:33
>>908
そのあとかいてるやんw

911 名前:デフォルトの名無しさん :2006/01/30(月) 17:00:33
>>909
AUTOEXEC.BATのSMARTDRV.EXEをコメントアウト(;^ω^)

912 名前:デフォルトの名無しさん :2006/01/30(月) 17:16:48
>>911
Win16ならともかくWin32でそれはないだろ。

913 名前:デフォルトの名無しさん :2006/01/30(月) 17:17:42
>>905
C/C++のexitに対応するのはExitProcessだろ。

914 名前:デフォルトの名無しさん :2006/01/30(月) 20:49:03
>913

c/c++のexitはCRTの終了処理が含まれるから厳密にはちがうよ


915 名前:デフォルトの名無しさん :2006/01/30(月) 21:12:25
>>914
論点はそこじゃないと思うのだが……。

PostQuitMessage()とExitProcess()はまったく違うぞ。

916 名前:デフォルトの名無しさん :2006/01/30(月) 21:18:29
>>914 自体はすばらしい洞察だと思うが

917 名前:デフォルトの名無しさん :2006/01/30(月) 22:26:23
じゃ、プラスモデあげる

918 名前:デフォルトの名無しさん :2006/01/31(火) 02:36:23
他プロセスのデバイスコンテキスト(?)を得るにはどうすれば良いでしょうか?
よろしくお願いします。

919 名前:デフォルトの名無しさん :2006/01/31(火) 03:02:18
プロセスにデバイスコンテキストなど無い

920 名前:デフォルトの名無しさん :2006/01/31(火) 03:03:47
GetDC

921 名前:デフォルトの名無しさん :2006/01/31(火) 03:22:26
Get DC card

922 名前:デフォルトの名無しさん :2006/01/31(火) 03:23:00
>>918

FindWindowEx関数で該当するウィンドウのハンドル(HWND)を受け取り
GetDC乃至BeginPaintでデバイスコンテキストを取得すればいいんじゃまいか?

923 名前:918 :2006/01/31(火) 03:31:19
>>919-922
なんとか解決できそうです、ありがとうございました。

924 名前:デフォルトの名無しさん :2006/01/31(火) 11:26:07
Spy++で表示されるウィンドウキャプションと
GetWindowText関数で取得したウィンドウキャプションが一致しません。

Spy++はどのようにウィンドウキャプションを取得しているのでしょうか?

925 名前:デフォルトの名無しさん :2006/01/31(火) 11:35:30
>>924
志村!逆!逆!

926 名前:デフォルトの名無しさん :2006/01/31(火) 11:41:44
逆ですか?
Spy++の動きがわかればそれを真似すればよいかなと...
もっと簡単な方法があるのでしょうか?

ちなみにGetWindowText関数で取得した値は、
SendCommand関数でWM_GETTEXTを送ったときと同じ値が返ってきます。

927 名前:デフォルトの名無しさん :2006/01/31(火) 11:53:01
>>924
取り方が違うんじゃなくて、取ってる対象が違う希ガス

928 名前:デフォルトの名無しさん :2006/01/31(火) 11:58:59
>>924
GetWindowTextは同一プロセス内のみ

929 名前:デフォルトの名無しさん :2006/01/31(火) 12:01:37
>>926
> SendCommand

SendMessageだろ?

930 名前:デフォルトの名無しさん :2006/01/31(火) 12:06:11
SendCommandって関数もあるみたいよ

931 名前:デフォルトの名無しさん :2006/01/31(火) 12:33:38
ごめんなさい。SendMessageでした。

932 名前:デフォルトの名無しさん :2006/01/31(火) 12:42:21
>>930
メッセージを送るのはSendMessageだろ?

933 名前:デフォルトの名無しさん :2006/01/31(火) 13:06:00
自己解決しました

934 名前:924 :2006/01/31(火) 13:17:36
すいません。
解決してません。

935 名前:924 :2006/01/31(火) 14:14:10
次のURLにあるコードではうまく取得することができました。
ttp://support.microsoft.com/kb/112649/JA/

>>928さんが言ってみえることが関係するのでしょうか?

936 名前:928 :2006/01/31(火) 14:37:41
>>935
MSDNをよく読め。
同一プロセスの時と違うプロセスの時とで動作が変わる事が書かれている。

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowtext.asp

937 名前:924 :2006/01/31(火) 14:53:30
日本語のMSDNしか目を通していませんでした。
読んでみます。ありがとうございました。

938 名前:デフォルトの名無しさん :2006/01/31(火) 15:00:54
グローバルのキーイベントどうやって取得したらいんですか?
よろしくお願いします。


939 名前:デフォルトの名無しさん :2006/01/31(火) 15:07:33
>>937
日本語のほうにも書いてあるぞ。
MSDNにしては完璧に訳してある。

940 名前:デフォルトの名無しさん :2006/01/31(火) 15:36:09
>>938
グローバルフック

941 名前:デフォルトの名無しさん :2006/01/31(火) 16:02:46
Sleepの動作を詳細に教えてください

942 名前:デフォルトの名無しさん :2006/01/31(火) 16:09:26
指定された時間分(単位ミリ秒)Sleepします

943 名前:デフォルトの名無しさん :2006/01/31(火) 16:13:19
>>941
MSDNライブラリじゃ足りない?

インシデント消費して、MSに聞いてみれ

944 名前:924 :2006/01/31(火) 16:16:33
やっぱりわかりません。
同一プロセスでないとGetWindowTextはNULLを返すということではないのでしょうか?
今回の場合NULLではなくWM_GETTEXTと同じ値を返します。

Timerイベント内(>>935)でGetWindowTextを呼び出すのと、
EnumChildWindowsのコールバック関数内で呼び出すのに違いがあるのでしょうか?
もちろんウィンドウハンドルは同じ値です。

945 名前:924 :2006/01/31(火) 16:46:11
プロセスIDを調べたら解決しました。
EnumChildWindowsを実行していうほうが同一プロセスで、
Timerイベントのほうが別プロセスでした。
そのため返す値が違ったようです。
スレ汚して本当にすみませんでした。

946 名前:デフォルトの名無しさん :2006/02/01(水) 10:50:28
HEX文字を数値に変換するAPIを教えてください

947 名前:デフォルトの名無しさん :2006/02/01(水) 11:16:28
sscanf

948 名前:デフォルトの名無しさん :2006/02/01(水) 11:57:18
APIじゃなきゃ嫌

949 名前:デフォルトの名無しさん :2006/02/01(水) 12:06:51
電卓を関数電卓にして外部操作しろ。

950 名前:デフォルトの名無しさん :2006/02/01(水) 12:08:20
StrToIntEx

951 名前:デフォルトの名無しさん :2006/02/01(水) 12:13:30
>>948
wsprintf 

952 名前:デフォルトの名無しさん :2006/02/01(水) 12:22:14
>>951
逆だろ

953 名前:デフォルトの名無しさん :2006/02/01(水) 12:38:41
test

954 名前:デフォルトの名無しさん :2006/02/01(水) 12:40:22
特定のドメインのアクセスを検知や抑制をしたいんですけど、
どんな方法がありますか?


955 名前:デフォルトの名無しさん :2006/02/01(水) 12:47:38
ISAPIフィルター

956 名前:デフォルトの名無しさん :2006/02/01(水) 16:29:34
WindowsのAPIでユーザがローカルLogonしたことを検知するAPIはあるのでしょうか?


957 名前:デフォルトの名無しさん :2006/02/01(水) 18:31:11
APIはあるにはある。(WlxLoggedOutSAS)
しかしAPI以外の方法をすすめる。

958 名前:デフォルトの名無しさん :2006/02/01(水) 19:13:32
すいません、質問させていただきます。
ディスプレイの電源が入っているかどうかを調べるAPIってありませんかね?
また、ディスプレイ関連で接続されているディスプレイの最大解像度を取得する関数なんか、無いですかね?

959 名前:デフォルトの名無しさん :2006/02/01(水) 20:25:30
解像度はEnumDisplaySettingsで取得。

960 名前:デフォルトの名無しさん :2006/02/01(水) 21:00:14
>>958
ディスプレイの電源状態が何に必要なのかが気になる。

961 名前:デフォルトの名無しさん :2006/02/01(水) 21:07:24
>>960
単純に、ディスプレイの電源状態を確認して、ディスプレイの電源が付いたと同時になんらかのプログラムを起動させることを考えています。
例えば、動画とかが電源ONと同時に頭から見れたら便利ですよね?


962 名前:デフォルトの名無しさん :2006/02/01(水) 21:14:00
961は天才

963 名前:デフォルトの名無しさん :2006/02/01(水) 21:14:06
モニタの電源がついてから安定するまで10秒ぐらいかかるうちのモニタはどうすれば

964 名前:デフォルトの名無しさん :2006/02/01(水) 21:25:24
Sleep(10000)する

965 名前:デフォルトの名無しさん :2006/02/01(水) 21:26:57
>例えば、動画とかが電源ONと同時に頭から見れたら便利ですよね?
別に?

966 名前:デフォルトの名無しさん :2006/02/01(水) 21:35:44
どうしても見つからないので教えて下さい。
印刷プレビュの実装に関して教えてもらえませんか。
MFCを使えばちょちょいの様ですが(MFCは使って無いので???ですが)、SDKに実装する方法を知りませんか。
正直、自分でガリガリ構築するのは…無理かと思ってます。
そこで、市販でも構わないのでクラスライブラリやDLLを探しているのですが…
一般的にはどの様にしているのでしょうか?
# やはりMFC?
# SDKベースでMFCの印刷プレビューを実装する方法でも構いません。
どなたか宜しくお願い致します。m(__)m


967 名前:デフォルトの名無しさん :2006/02/01(水) 21:39:26
コンボボックスにCB_ADDSTRINGメッセージを送信しても、CBS_SIMPLEの物以外が無反応で困ってますorz

ソース(VC6.0で作成。MFCとかは使用していません)
http://tnet1.s18.xrea.com/prog/ComboBox_Test.zip

左から順に
CBS_DROPDOWN、CBS_SIMPLE、CBS_DROPDOWNLIST

968 名前:デフォルトの名無しさん :2006/02/01(水) 21:49:42
>>967
ちゃんと追加されてる。

コンボボックスの高さが足りないため表示されないだけ。

969 名前:デフォルトの名無しさん :2006/02/01(水) 22:08:36
>>966
印刷も結局のところDCを使った描画です

970 名前:デフォルトの名無しさん :2006/02/01(水) 22:14:35
>>966
SDKで印刷プレビュー実装しているの探し見たけど、やっぱり
>>969の言う通り、DC使った描画だったよ。印刷の仕方からして
当然といえば当然だけど。
MFCは実装するというより、AppWizard使って作れば最初からつけられる。
「Doc-Viewをサポート」にチェックするだけ。

971 名前:デフォルトの名無しさん :2006/02/01(水) 22:22:54
956です。ありがとうございます。

>>957
>しかしAPI以外の方法をすすめる。

これは何かAPIで問題があるからAPI以外と言うことをお勧めしてくれてるのでしょうか?
それともDebugが難しいから?


972 名前:デフォルトの名無しさん :2006/02/01(水) 22:43:05
>>968
リソースのコンボボックスの高さを弄ったら見事にできました。
ありがとうございました!

973 名前:デフォルトの名無しさん :2006/02/01(水) 23:00:52
>>966
自分は「猫でも分かる...」を参考に作った。
win98 と winXP でドライバのセットが違うのが面倒だった。
ページが複数になるとき、狙ったページを見るとか、印刷するとかが面倒。
MS Word のようなヘッダ、フッタ、ページ番号などを付けようとすると
更に面倒。
bmp の方があっさりしている。

974 名前:デフォルトの名無しさん :2006/02/02(木) 00:58:43
>>971
調べないで答えるがターミナルサービスAPIでできそうな希ガス

975 名前:デフォルトの名無しさん :2006/02/02(木) 06:14:54
パーティションを切っている場合、同一ハードドライブでも複数のドライブレターが付きますが、
2つのドライブレターが、同一のHDDに属しているかどうかを見分ける方法を教えてください。


976 名前:デフォルトの名無しさん :2006/02/02(木) 09:57:14
>>975
見分ける必要がどこにあるのかを教えて下さい。

977 名前:デフォルトの名無しさん :2006/02/02(木) 10:05:37
>>976
Fire File Copyのようなファイルコピー援用ソフトだと必須だな。
やり方は知らんが。

978 名前:デフォルトの名無しさん :2006/02/02(木) 10:06:41
>>975
読み出し方は忘れたが、HDD にはメーカ名や Ser No. やオレはこういうものだ、
こう読み取ってくれえというのが付いているから読み取って比べれば。
デバイス・マネジャなんぞで出てくるヤツ。

979 名前:デフォルトの名無しさん :2006/02/02(木) 11:34:12
>>976
何のためにこのスレに居座っているのか教えてください。

980 名前:デフォルトの名無しさん :2006/02/02(木) 12:24:55
>>979
なぜ教えなければならないのか教えてください。

981 名前:デフォルトの名無しさん :2006/02/02(木) 12:37:50
踊るなよ

982 名前:デフォルトの名無しさん :2006/02/02(木) 17:04:11
>>981
なぜ踊ってはいけないのか教えてください。

983 名前:デフォルトの名無しさん :2006/02/02(木) 20:08:46
画面に表示されている文字列を取得するAPIってあります?
タイトルバーやダイアログメッセージの取得方法は分かりますが、
画面上に配置されているリストボックスやラベルの文字列も取得をしたいのです……

984 名前:デフォルトの名無しさん :2006/02/02(木) 20:14:04
>>983
それら全てウィンドウです

985 名前:デフォルトの名無しさん :2006/02/02(木) 20:14:52
>>983
あるよ
ヒントは>>984

986 名前:デフォルトの名無しさん :2006/02/02(木) 20:15:31
>>983
それは別プロセスのウインドウ?

昔からあるコントロールは、大抵取得するメッセージがあるはず。

最近のコモンコントロールは、別プロセスから取得できないから、
どうしてもやりたければ、DLL注入してごにょごにょってことになるのかな。
そこまでしてやりたいのかどうかは知らないけど。

987 名前:デフォルトの名無しさん :2006/02/02(木) 21:26:59
>>966
WTLはどう?

988 名前:デフォルトの名無しさん :2006/02/02(木) 21:58:54
次スレまだぁ?

989 名前:847 :2006/02/02(木) 22:09:44
>>853
勉強になった。サンクス。そのことに関して調べてみよう。

990 名前:デフォルトの名無しさん :2006/02/02(木) 22:11:27
>>971
MyGina.dllを作成するのははだめという訳じゃない。
ミスって回復コンソールからレジストリを復旧するとか
OS再インストのおまけが付きとか、
Myサービス作ってLogonを通知するのがメンドイとか
ドキュメントが少ないとか。
たとえばLogon後に適当なEXEを走らせて検知する方が簡単かと思う。

>>975
CreateFile()→DeviceIoControl()使って
"\\\\.\\C:"でIOCTL_DISK_GET_DRIVE_LAYOUT
したものと
"\\\\.\\D:"でIOCTL_DISK_GET_DRIVE_LAYOUT
したもののシグニチャが一致したらそうなる
ようだ。ただしコードは未確認。

991 名前:デフォルトの名無しさん :2006/02/02(木) 22:46:21
こっちに書くかDDKスレに書くか悩んだのですが……

特定のポートに刺さっているUSB機器(自作)のファームアップデート時に、
物理的にコネクタ抜き差ししているのですが、この抜き差しの作業ををAPIで擬似的に
再現することは可能でしょうか?
 デバイスマネージャからの接続ポートの無効化→有効化で出来るか、と考えた
のですが、それを実現できる関数の名前が分からずにいます。
 上記手段を使う場合にググるべき関数の名前か、その他一般的手段のヒントを
教えてもらえませんでしょうか?

992 名前:デフォルトの名無しさん :2006/02/02(木) 23:05:05
>>991
http://www.codeproject.com/system/DevicePropertySheet.asp

と同じような感じでDevMgr.dllをハックしてみては?

993 名前:デフォルトの名無しさん :2006/02/02(木) 23:14:27
>>991
USB機器側が自作なら、機器側で抜き差しをエミュレート(D+=D-=Low)
するのが簡単確実。


994 名前:デフォルトの名無しさん :2006/02/02(木) 23:16:28
SetupDiRemoveDeviceとか。

995 名前:991 :2006/02/02(木) 23:40:35
 うお、短時間にいろいろとありがとうございます。

>992殿の手段と >994殿のAPI、チェックしてみようと思います。

>993殿
 ファームアップデートした段階で応答なくなっちゃうんです(死
で、再起動するには抜き差し……と。

996 名前:デフォルトの名無しさん :2006/02/02(木) 23:44:56
ret = CreateNewThread("Win32API質問箱 Build40");

997 名前:デフォルトの名無しさん :2006/02/03(金) 00:31:45
たてた。
http://pc8.2ch.net/test/read.cgi/tech/1138893959/

998 名前:デフォルトの名無しさん :2006/02/03(金) 02:32:42


999 名前:デフォルトの名無しさん :2006/02/03(金) 02:33:49


1000 名前:デフォルトの名無しさん :2006/02/03(金) 02:34:33
1000ならぬるぽ


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