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


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

Win32API質問箱 Build52



1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

792 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:08:50 ]
メニューバー?
Reader8のメニューは普通だと思うが?
ツールバーか?

793 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:17:27 ]
どうしてnCodeがマイナスだとすぐにCallNextHookExを返すの?

794 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:44:28 ]
そういう決まりだから

795 名前:791 mailto:sage [2007/05/06(日) 00:18:21 ]
>>792
kjm.kir.jp/pc/?p=32876.jpg
赤線で囲ってあるところなんですけど、なんて言うんでしょうか?

796 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:23:10 ]
メニューバー

797 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:24:11 ]
メニューにアイコンをつけたいとかそういう話?

798 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:04:42 ]
質問です、以下のようなプログラムを現在制作しています。

コンソールアプリケーション
テキストをドラッグ&ドロップすることで、一定の処理をテキストファイルに対して行う。
「一定の処理」は、このアプリケーション用に書かれたDLLのによって変化する。

それで、DLLの検索&ロードをFindFirstFileとFindNextFile、LoadLibraryを用いて行っています。
そのプログラムなのですが、IDE(VC7)からでは設計通りに動作するのですが、それ以外では動作せず…。
どうやらFindFirstFileなどで、DLLが検索に引っ掛からないようなのです。

(おそらくはカレントディレクトリの問題なのでしょうが)、何故このようなことが起こるのでしょうか?
また、対策を教えてください。よろしくおねがいします。

799 名前:791 mailto:sage [2007/05/06(日) 01:11:24 ]
アイコンは別にいらないのですが、Adobe Readerみたいにメニューバーの通常状態の色や、選択状態の色を変えたいのです。
あと、右上端にあるバツ印もどうやっているでしょうか?

800 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:11:40 ]
GetModuleFileName



801 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 01:12:45 ]
>>798
>(おそらくはカレントディレクトリの問題なのでしょうが)
そう思うなら、まずはGetCurrentDirectory()で調べるべきでは?

802 名前:デフォルトの名無しさん [2007/05/06(日) 01:56:35 ]
DLLを実行ファイルに含めて、一つの実行ファイルにすることって可能でしょうか?

803 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:05:33 ]
>>802
無理やりリソースとして埋め込んで、実行時に復元すれば?

804 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:08:48 ]
hIconでアイコンを指定しました。
けど
kjm.kir.jp/pc/?p=32881.png
みたいにタスクバー上でしかアイコンが変わってません。
どうしたらプログラム上でもアイコンを変えれますか?

805 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:12:05 ]
hIconSm を放置してるとか?

806 名前:798 mailto:sage [2007/05/06(日) 02:17:35 ]
>801
ありがとうございます、さっそく調べてみました。
すると、カレントディレクトリがC:\Document and Settings\(ユーザー名)となっているようです。
これは何故なのでしょうか、理由をどなたか知っていれば教えていただければと。

807 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:19:44 ]
>>805
素早いレスありがとうございます。
hIconSmの存在も調べました。
でもwindows95以外はWNDCLASSEXを使えないらしく、だからhIconSmも使えないそうなんです。
実際hIconSmも指定してビルドするとWNDCLASSにはhIconSmは存在しないってエラーがでました。


808 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:19:51 ]
理由を考えるよりカレントディレクトリに依存しないようにプログラムを変えろ

809 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:23:44 ]
>>807
Windows 95 以降全部で使えるぞ。

810 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:24:58 ]
むしろどこに Win95 以外使えないって書いてるのか教えてくれ



811 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:28:52 ]
Windows 95のころのSDKじゃね?
当然「Windows 95以外」が意味してるのはNT 3.5とかWindows 3.1とか

812 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:31:49 ]
>>809-811
あれ、つかえるんですか。じゃあそれでやってみます。

813 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:32:14 ]
>>811
VC++ 5.0 あたりか。

814 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:42:04 ]
hIconSmで指定しても駄目でした。
ちなみにVC++ 6.0をつかってます

815 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:45:57 ]
あ、16 ビット版のアイコンをエディットしてないとかはどうか?
確か VC++ 6.0 あたりは、アイコンを新たに作成したときは
32 ビット版と 16 ビット版が両方作られてたはず。
どっかでエディット対象を選択できるんで、
それで 16 ビット版の方もエディットすればいいはず。

816 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:47:11 ]
ちゃんと WNDCLASSEX 使ってるか? WNDCLASS じゃないぞ

817 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:53:25 ]
>>815
一つしか作られてないと思うのですが、どこに作成されるのでしょうか?

>>816
WNDCLASSEXに変えても駄目でした。

818 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:54:32 ]
>>817
1つのファイルに2つのアイコンが入ってるはず。

819 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:55:45 ]
ビットじゃないやw ドットだ。

820 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:58:26 ]
>>818
一つしかアイコンはありませんでした・・・
もちろん32のほうだけしかありません・・・



821 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 02:59:02 ]
>>820
どういう風に確認した?

822 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:01:58 ]
>>821
アイコンの保存場所がワークスペースがあるフォルダなのでそこを確認しました

823 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:04:56 ]
>>822
アイコンの中身は見たのか?

824 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:07:30 ]
WNDCLASSEXでhIconSmを指定してる箇所のソースを
ここに張り付けた方が解決が早い予感

825 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:11:51 ]
>>823
アイコンの中身は見ました。
プロパティも確認しました。

826 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:13:43 ]
メインのとこだけ貼り付けます
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) {
MSG msg; //メッセージ情報格納用構造体
WNDCLASSEX wc; //ウィンドウクラス
HWND hWnd; //ウィンドウハンドル
//*****ウィンドウクラスの設定*****//
wc.cbSize = sizeof(WNDCLASSEX); //構造体サイズ
wc.hInstance = hInstance; //インスタンスハンドル
wc.lpszClassName = szClassName; //ウィンドウクラス名
wc.lpfnWndProc = WindowProc; //ウィンドウプロシージャ名
wc.style = CS_HREDRAW|CS_VREDRAW; //ウィンドウスタイル
wc.hIcon = LoadIcon(hInstance,"IDI_ICON1"); //アイコンハンドル
wc.hIconSm = LoadIcon(hInstance,"IDI_ICON1");
wc.hCursor = LoadCursor(NULL,IDC_ARROW); //カーソルハンドル
wc.lpszMenuName = "saisei"; //メニュー
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //ウィンドウの背景色セット
//*****ウィンドウクラス登録*****//
if(!RegisterClassEx(&wc)) return FALSE; //登録失敗
//*****ウィンドウの作成*****//
hWnd = CreateWindow(szClassName,"再生プログラムだべ",WS_OVERLAPPEDWINDOW,440/*CW_USEDEFAULT*/,650/*CW_USEDEFAULT*/,400,100,NULL,NULL,hInstance,NULL);
/*hWnd = CreateWindow(ウィンドウクラス名,ウィンドウタイトル,ウィンドウスタイル,ウィンドウの水平座標位置,ウィンドウの垂直座標位置,ウィンドウの幅,ウィンドウの高さ,親ウィンドウのハンドル,メニューのハンドル,インスタンスハンドル)*/
//*****ウィンドウの表示*****//
ShowWindow(hWnd,nCmdShow); //ウィンドウの表示状態設定
UpdateWindow(hWnd); //ウィンドウの表示領域更新
//**********メッセージループ***************
while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);
}
/*while(メッセージの取得){メッセージの変換,メッセージをプロシージャへ送信}*/
return msg.wParam;
}

827 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:14:16 ]
>>806
IDEから実行したらおそらくカレントディレクトリはプロジェクトファイルのあるディレクトリになってるはず。
ファイルをドラッグ&ドロップして起動した場合は、ファイルのあるところがカレントディレクトリになってるはず。

理由?知らね。そのほうが都合がいいからだろ。

DLLをEXEと同じディレクトリに置くことにしてるのなら>>800とか。

828 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:14:36 ]
アイコンファイルをうpってみたら?

829 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:20:49 ]
アイコンをアップしました
ttp://vipup.sakura.ne.jp/512kb/src/512kb_9949.zip.html

830 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:31:28 ]
確かに 32 ドットのしか入ってないね・・・。
>>826 も別に変には思えないし。
じゃ、16 ドットのも作ってみたらどうかな。



831 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:40:40 ]
>>826
"IDI_ICON1"

MAKEINTRESOURCE(IDI_ICON1)
に置換すれ
ウチの環境では、それでうまくいった

832 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:54:18 ]
MSDNより
>LoadIcon 関数がロードできるのは、GetSystemMetrics 関数の SM_CXCURSOR と SM_CYCURSOR
> の各フラグに相当するサイズのアイコンだけです。それ以外のサイズのアイコンをロードするには、
>LoadImage 関数を使ってください。

wc.hIconSm = LoadImage(hInstance,"IDI_ICON1", IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); 
でどお?


>SM_CXCURSOR と SM_CYCURSOR
これ誤植っぽい、SM_CXICON が正しい。

833 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 03:56:50 ]
32 ドットのアイコンを hIconSm にセットしたら、
自動的に縮小された(もちろん画像は粗い)なったはずなんだがなあ・・・。

834 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 07:51:11 ]
>>833
リソースの作り方によるよ

835 名前:デフォルトの名無しさん [2007/05/06(日) 11:45:27 ]
WindowsMediaInfomationをVCで使ってPCの情報を抜きたいです。
VBのサンプルを見つけたのですが、VC6.0への置き換え方法がよくわかりません。
ttp://www.wmifun.net/sample/win32_operatingsystemd.html
VCではどうやってCOM呼び出しを実装すればよいのでしょうか?
APIの質問ではなくて、VCの質問になるかもしれませんが、ご教授お願い致します。

836 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:47:11 ]
WTL

837 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:51:42 ]
ttp://zatsugaku.info/index.php?Program%2FWmi%2FProgram


838 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:52:51 ]
驚異的に改行されてねえ
とか思ったけどIEだとOKなのか

839 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:59:46 ]
>>831
うまくいけました。
ありがとうございます!

>>832
なんか
error C2440: '=' : 'void *' から 'struct HICON__ *' に変換することはできません。
っていわれました。


みなさま数々のご教授ありがとうございました。
またなにかエラーのときはよろしくおねがいします。

840 名前:デフォルトの名無しさん [2007/05/06(日) 12:33:32 ]
Wininetに関して質問なんですが、InternetOpenはアプリの起動時に実行すべきでしょうか?
それとも通信の必要がある場合にその都度の方がいいですかね?



841 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:22:32 ]
ダイアルアップの人もいるし、、、ノートで出先とか

842 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 13:54:59 ]
>>840
アプリの起動時、ネットにつながっていなくてもInternetOpen
は成功する。

実際にネットに接続するAPIが呼ばれるまでにネット接続
が確立すればOK。


843 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:10:42 ]
ということはどちらでも良いって事でしょうか。
タイムアウトもその都度設定するのはアレなんで起動時に呼ぼうと思います。
ありがとうございました!

844 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:14:08 ]
>>843
msdn2.microsoft.com/en-us/library/aa385438.aspx

この辺りを一読しとけ

845 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:54:04 ]
タイムアウトは効いたっけ?効果なかった気がする

846 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 16:09:17 ]
       へ      ヘ          │       /∧ヽ__/∧ヽ_ 〜∞
      /ハ \_/ 八         │   ∞〜 /ノ ヽ;;;;;;;;;丿/ ヽ\\ 〜∞
     /_______)         │     (;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) 
    {_____愛●国_|         │     [_愛●國______] .
     |ミ/ ー―◎-◎-).        │     (__  (__  ミミミミミミミミ|
    (6     (_ _)  )        │      )         ミミミミミミミ)
   ノ/| .∴ ノ  3 ノ イエーイ..    │     ( ノ(。。 ) ι∵)リ||σ)ミミ) 
   ノ/ _\_____ノ__         │     丶 ε     U j  ノミミ)
  ノ/ /  ) 嫌 ≡ ;;;; ) `__ノフ.   │  イエーイ ヽ ,,_  U  ___,,ノ   /
  U |__|. 韓 ≡ ;;; )_/   ∈)   │       \,,______,ノ  〈
    |  |  .流 ≡   ) ̄ ̄ ̄´    │ _∩     厶_______ノ⌒丶.
    ヽ  \       )         │(S 〉   / ANTI KOREA    


847 名前:840 mailto:sage [2007/05/06(日) 17:10:49 ]
すいません、>>844さんのリンク先でサンプル見つけました。
タイムアウトも効かないみたいなので非同期で実装しようと思います。
ありがとうございました。

848 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 17:48:51 ]
これはどういう意味ですか?

イベント ID (0) (ソース testsrv 内) に関する説明が見つかりませんでした。
リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。
この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。
次の情報はイベントの一部です: Service started.


849 名前:デフォルトの名無しさん [2007/05/06(日) 18:15:18 ]
>>837 参考になりました。ありがとうございます。

850 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 18:26:12 ]
>>848
>詳細については、ヘルプとサポートを参照してください。



851 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:57:31 ]
どうしても行き詰まってしまい質問させて頂きます。
現在、HICONのキャッシュを作成し、次回からはキャッシュを元にHICONを復元させるプログラムを組んでおります。
GetDibsを使いHICONのカラーとマスクをそれぞれ、32bit, 16bitで取得し吐き出せています
吐き出させる直前の内容をCreateIconIndirectでHICONにし描画すると問題はありません
しかし、キャッシュから得た内容でHICONを作成し描画すると、アイコンによって透明可に失敗しています
皆様お知恵をお貸しくださいorz

852 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:09:27 ]
吐き出す前と後で何か情報が変わってんだろ

853 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:24:47 ]
そのキャッシュは正しく作れてんの?

854 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 21:33:05 ]
レスありがとうございます。
吐き出すデータとキャッシュに格納したデータのチェックサムを取ってみました所一致しました。
キャッシュ側のテストもかなり行っておりますので、キャッシュ側の問題とはやはり考えにくいですorz
現在、何故かWinrarのアイコンだけが不透明にならないという摩訶不思議な状態です;
もう一度、アイコンの取得全体を作り直して見たいと思います

855 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:02:40 ]
まず、

@キャッシュなしで、想定する動作になるか確認。
A数キャッシュ(2個ぐらい)で、想定する動作になるか確認。
B>>851で失敗したキャッシュ数の半分のキャッシュ数で、想定する動作になるか確認。


んで結果は?

856 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:34:29 ]
>>855さん
@現在はテスト中ですので、キャッシュから取得に失敗した場合は何もしないようにしています
A確認済みです。
B確認済みです。特定のアイコンのみが意図した通りの描画がされず、また、チェックサムを見る限りキャッシュデータ自体は問題ありませんでした。


857 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:36:34 ]
>>856
Aは成功?Bは失敗?

858 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 22:46:47 ]
いまいち>>851の流れが見えん。

問1.HICONのキャッシュとは何?
 独自フォーマットのデータ?

問2.吐き出させる直前の内容とは?
 exe.dlなどのモジュールに入ってるリソースそのものの事?

問3.キャッシュから得た内容でHICONを作成し描画する関数は何?
 CreateIconIndirectの事?

問4.
>アイコンによって透明可に失敗しています
>Winrarのアイコンだけが不透明にならない

ここを詳しく


859 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:14:35 ]
Alpha付き32ビットアイコンの予感

860 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:11:01 ]
レス有り難うございます。
意見を頂けて大変恐縮です。

>>857さん
こちらでは動作上は成功と見ています

>>858さん
問1: 保存したいHICONをGetIconInfoで詳しい情報を取得した後に、カラーとマスクのビットをGetDIBBitsで取得します
そして、取得した情報をキャッシュとして保存するようにしております。

問2: 直前の内容はカラー、マスクのピクセル情報です。ビットマップの画像ビットと同じですね(^^;

問3: その通りです。キャッシュから、カラー、マスクのピクセル情報を得た後、CreateIconIndirectでHICONを作成し、DrawIconで描画するようにしております

問4: Winrarのアイコンだけは本来透過される所が黒くなっていますorz
カラーとマスクをそれぞれ別に描画させてみると、
カラーではきちんとWinrarの本が束ねられている所以外は黒く
マスクでは、本が束ねられている所は黒く、それ以外は白くなっている事は確認済みです
BitBltを用いるとうまく透過されるのですが、今度はBitBltでは別の問題が発生するという状態に・・・

長文申し訳ありません



861 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:29:56 ]
WinRARのアイコンは32bitカラーだったりしない?

862 名前:851 mailto:sage [2007/05/07(月) 01:55:06 ]
>>861さん
確認してみた所、32bitではありませんでした;

それと、何とか解決することができましたorz
GetDIBBitsを使わず、別の方法でビットを取得した所うまく行きました…
原因が全く分かりませんが、このまま作っていきたいと思います
こんな質問に付き合って下さった皆様本当に有り難うございました。

863 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 02:35:08 ]
>>862
CreateIconIndirectで使うマスクは2bitビットマップのはず。
16bitでなく2bitでキャッシュしてみたら?

なんか解決しちゃったみたいだけど。

864 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 08:12:30 ]
>>862
そうやね、可能性あるね。
使う色が違う他のアイコンにしたら、また問題が出るんではないかと

865 名前:デフォルトの名無しさん [2007/05/07(月) 11:24:07 ]
>>863
アイコンのマスクビットマップは2bitじゃなくて高さ2倍の1bitじゃないか?

866 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 21:14:42 ]
ttp://support.microsoft.com/kb/216686/ja
ここを参考にExcelを操作するプログラムを作っているのですが

Worksheets(2).Delete

に相当することをやるにはどうしたらいいんでしょうか?

867 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 21:54:18 ]
WM_PAINTについて、OSによってはメッセージループに来ず、
直接コールバックに来るとかなどの、
詳しい挙動が載っているサイトとかありましたら教えてください。

868 名前:866 mailto:sage [2007/05/07(月) 21:55:47 ]
環境
Win2000, Excel2000, VC++6, SDK


869 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:04:57 ]
>>866
>>868

CLSIDFromProgID(L"Excel.Application", &clsid);

こいつは、ProgIDからCLSIDを求めている。
んで、そのCLSIDからExcel.ApplicationインターフェイスのpXlAppを取得してる。
pXlAppからWorkbook伝いにWorksheetsを求めればいいんじゃない?

870 名前:869 mailto:sage [2007/05/07(月) 22:07:39 ]
メソッドとかのノードがわからんだったら
oleviewとかで調べてみてわ?



871 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:08:18 ]
>>867
来ないから安心しろ
来るといったらせいぜいSendMessageした時くらいだろ

872 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:08:34 ]
×てわ
○ては

873 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:09:16 ]
>>871
SendMessageはメッセージループから来るだろ・・・

874 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:09:59 ]
>>873
MSDN嫁

875 名前:867 mailto:sage [2007/05/07(月) 22:13:59 ]
>>871
自分が実験した感じでは、9xでは起動時に、
XPでは通常時でも半々ぐらいで直接コールバックに来るみたいです。
また、XPで直接コールバックに来た場合、
DefWindowProcをしない場合に、メッセージループにも来てくれるみたいです。

876 名前:866 mailto:sage [2007/05/07(月) 22:15:49 ]
// Call Workbooks.Add() to get a new workbook...
IDispatch *pXlBook;
{
 VARIANT result;
 VariantInit(&result);
 AutoWrap(DISPATCH_PROPERTYGET, &result, pXlBooks, L"Add", 0);
 pXlBook = result.pdispVal;
}

この後です。pXlBook を使ってどうAutoWrapを使えばいいのかが分かりません。

ブック.Worksheets(xxx).xxxxxxxx


877 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:19:35 ]
>>875
同一スレッド内で UpdateWindow の類が発生したときには直接コールバックに来る。
他スレッド(プロセス)からの場合はどうだったか覚えてない。

ウィンドウが Activate/Deactivate されたときの再描画の挙動も普段の WM_PAINT とは
違っていたような記憶もある。

878 名前:867 mailto:sage [2007/05/07(月) 22:33:47 ]
>>877
>Activate/Deactivate
自分も違うような感じがしていました。
もう一度実験してみます。

879 名前:869 mailto:sage [2007/05/07(月) 22:52:06 ]
このオブジェクトは大きな流れとして
Application → Workbooks → Workbook → Worksheets → Worksheet
とある。

んでこれ・・・

AutoWrap(DISPATCH_PROPERTYGET, &result, pXlBooks, L"Add", 0);

pXlBookのAddメソッドを、AutoWrapという補佐関数を介して呼んでいる。
なお、Addメソッドの結果は、追加した新しいブックのインターフェイスポインタが入ってる。
(Workbook& Workbooks.Add()な感じで、結果はresultにある)

メンバ一覧
msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.workbooks_members(VS.80).aspx
しかし、DISPATCH_PROPERTYGETとは言うけど、Addはメソッドだよなー
結果、pXlBookには、いい値が入ってる?

880 名前:デフォルトの名無しさん [2007/05/07(月) 23:19:32 ]
WindowsMediaPlayerのパス位置をAPIで取得したいのですが、
どうやればできるでしょうか?
マイドキュメントとかはSHGetSpecialFolderLocationで取得できましたが、
アプリ個別は絶対パスで指定方法しか使えませんか?
よろしくお願いします。



881 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 23:25:47 ]
COMなレジストリを探索するのはどう?

882 名前:デフォルトの名無しさん [2007/05/08(火) 00:00:18 ]
PATHにないのに、startやファイル名を指定して...で起動できるものは
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\
の下にwmplayer.exeがあるよ

883 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:06:36 ]
その中を漁ると、消したはずのエロゲーのパスとかが残っていて、他人の環境で確認すると楽しいよ。

884 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:12:27 ]
>>880
playerを起動させて、プロセス一覧から取ってくるとか。
ユーザが入力しなくていい分、楽かもしれない。

885 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:18:15 ]
calc, notepadみたいに、Shellでwmplayerって打てば開くんやね

886 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:24:37 ]
>>882
LoadLibraryに"wmplayer"でパスを取る解法もあるのか

887 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:27:32 ]
システムドライブ+\Program Files\Windows Media Player\wmplayer.exe

888 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:30:18 ]
16、24、32、48の各サイズを含むアイコンから
ExtractIconExで取得される
小さいアイコンは16×16と24×24で
大きいアイコンは32×32になるのでしょうか?

DrawIconExでアイコンハンドルをhIconSmallにして、サイズを16より大きくすると
24×24のアイコンが表示されます。
また、ハンドルをhIconLargeにし、サイズを32より大きい値を指定すると
32×32のアイコンが拡大されて表示されてしまいます。

たとえばサイズ16のアイコンを24に拡大して表示とか
サイズ48のアイコンの表示が出来ません。

分かりにくくて申し訳ありませんが、
分かる方いたらお願いします。



889 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 00:35:26 ]
LoadImage でサイズ指定してロードしたらどう?

890 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:09:32 ]
>>882
へー、880じゃないけどすごく参考になった。サンクス



891 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 01:13:52 ]
>>889
すいません、説明が足りませんでした。
dllやexe, iclなどからのロードもあるので
アイコンインデックスを指定する必要があったので
ExtarctIconExを使ってました。

892 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:24:12 ]
>>882
環境変数と引用符がある場合があるので注意
scripting.cocolog-nifty.com/blog/2007/03/path_367f.html







[ 続きを読む ] / [ 携帯版 ]

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

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