1 名前:デフォルトの名無しさん [2006/01/21(土) 00:32:19 ] オートメーションって情報少ないからみんなで情報交換しよ><
2 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 01:34:50 ] 腹減った
3 名前:デフォルトの名無しさん mailto:sage [2006/01/21(土) 10:38:45 ] VARIANT v; v.vt = VT_VARIANT | VT_BYREF; v.pvarVal = &v;
4 名前:デフォルトの名無しさん [2006/01/21(土) 21:41:06 ] 話題きぼんぬ。
5 名前:デフォルトの名無しさん [2006/01/22(日) 01:04:40 ] VARIANTでVT_NULLつくるときって、↓でいいのかな? これ以外にすることってある? VARIANT vNull; vNull.vt = VT_NULL;
6 名前:デフォルトの名無しさん [2006/01/22(日) 01:12:57 ] 懐かしいな…
7 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 14:53:27 ] 何に使ったらいいんだ
8 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 17:16:11 ] 誘導されたので・・・ VC6にて、ActiveXでWebページ内で動くプログラムを作ってます。 リソースエディタでFORMVIEWのダイアログを作り、ClassWizard にて CFormView派生のクラスを作成。 CSampleCtl (プロジェクトをSampleとして作った場合のActiveX Controlのクラス) にて、 OnCreate で フォームビューのクラスを Create しているのですが、失敗してしまってます。(Create で 0 が返る) 失敗するのは、コントロールウィザードから TreeView(Microsoft TreeView Control) などをフォームに貼り付けた場合で、 スタティックテキストやエディットボックスのみのフォームでは失敗せず、ブラウザでの表示も確認しています。 TreeViewやListViewを使いたいのですが、どうすればいいのでしょうか。 プロジェクトは、プロジェクトウィザードのMFCActiveXコントロールから作成しています。
9 名前:デフォルトの名無しさん [2006/01/22(日) 20:33:20 ] OLE Drag&Dropもここでいいんかな?
10 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 20:38:25 ] >>8 ActiveXのコントロール数とコントロールの種類は正しく設定した?
11 名前:デフォルトの名無しさん mailto:sage [2006/01/22(日) 20:49:45 ] >>9 いいんじゃない?
12 名前:9 [2006/01/22(日) 21:23:24 ] OLEドラッグアンドドロップに付いての質問です。 特定のファイルタイプのみを受け付けたい場合はどのように実装するんでしょう? DragEnterの中で何かすれば良いと思うのですがイマイチ分からず。
13 名前:デフォルトの名無しさん [2006/01/23(月) 01:00:25 ] 教えてください C++BuilderでActieFormを作りました しかし、10月25日のウィンドウアップデート移行 動作しなくなりました。 もちろんベリサイン認証は取ってあります 同じ経験した方いませんか?
14 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 01:12:53 ] >>8 InitCommonControls は?
15 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 01:15:48 ] >>10 コントロール数: 1 ランタイムライセンス: なし ヘルプファイル: なし 可視状態のときにアクティブにする(default) バージョン情報ボックスあり コントロールをどのウィンドウのサブクラスに→(none) 基本デフォルトの状態そのままで作ってます。 なんか勘違いしてますか?
16 名前:デフォルトの名無しさん mailto:sage [2006/01/23(月) 09:16:30 ] >>14 ありがとうございます。 InitCommonControls, InitCommonControlsExともに使ってみましたが、効果ありませんでした。 ListViewのみをフォームに入れた状態で InitCommonControlsEx で ICC_LISTVIEW_CLASSES を指定し、TRUEが変えるのも確認しましたが・・・
17 名前:8 mailto:sage [2006/01/24(火) 13:30:37 ] VC6のリソースエディタでフォームビュー作ってコンポーネントの追加からListView貼り付けでやってましたが、 リソースファイル使わずにフォームのOnCreateでCListViewを作るようにしたら成功しました。 ので、リソースエディタを使ったListView/TreeViewの作成はしないほうがいいということ・・・? とりあえず暫くはリソースエディタを使わない方法でやってみます。
18 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 00:11:31 ] >>17 報告乙。
19 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 22:15:19 ] ActiveXでさ、ポップアップブロックとかもできるぐらいだから 簡単なタブブラウザみたいなのもできないかなと思うのだけど?
20 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 23:50:24 ] いくらでもあるし、それらはIEコンポーネント使ってるよ
21 名前:デフォルトの名無しさん [2006/02/02(木) 00:23:11 ] ブラウザの中でタブコントロールを作成してさらにブラウザコンポーネント配置か。。。 なんか意味あるのか意味ないのかわからんな。
22 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 20:28:52 ] 8です。 今さらなんですが、 COleControl のサブクラスの OnCreate でフォームビューを作成する事が既にActiveXコントロールの考えから外れてるんでしょうか? 実行すると必ず Warning: Creating a pane with no CDocument. が出てくるので・・・ OnInitialUpdateやそれに代わるものが見当たらないんで、このまま警告無視していくか、フォームでなくウィンドウにすべきか迷ってます。
23 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 00:09:03 ] >>22 多分間違ってる。 コントロールを1つ1つ定義していくのが正しい(?)やり方なんじゃないかと思う。
24 名前:デフォルトの名無しさん mailto:sage [2006/02/05(日) 03:17:10 ] 今 ActiveX SDK付いてる本ご存知ないですか? サイトからは手に入らないです
25 名前:デフォルトの名無しさん mailto:sage [2006/02/05(日) 07:42:31 ] >>24 今はとりあえずPratformSDKを試してみたら?
26 名前:デフォルトの名無しさん mailto:sage [2006/02/07(火) 23:56:51 ] >>23 遅れたがレスサンクス なるべく早い段階でWindowsUpdateのようなウィンドウで動くプログラムに切り替えるよ
27 名前:デフォルトの名無しさん [2006/02/08(水) 01:42:32 ] Hello ? =)
28 名前:デフォルトの名無しさん [2006/02/17(金) 00:08:57 ] ちょっとスレ違いになるかもしれませんが質問です。 JavascriptからActiveX(OCX)のメソッド呼び出し時にArrayオブジェクトを渡したいんですが できるんでしょうか? もしできるのならやり方を教えてください。 呼び出し例) ・javascript var array = new Array(); object.method(array); // objectがActiveXオブジェクト ・ActiveX void HOGE::method(/* どんな型にするのか? */ array){ ・・・ /* 処理 */ }
29 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 00:27:35 ] >>28 とりあえずVARIANTにしておけば?
30 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 00:45:58 ] >>29 VARIANTで受け取りSafeArrayで取り出そうとしましたがjavascriptエラーになりました。。 (メソッドのパラメータがおかしいとか何とか)
31 名前:デフォルトの名無しさん mailto:sage [2006/02/17(金) 22:54:12 ] VCで作ったActivexのDLLをWebで配布出来るように.NET Frameworkの ツールを使ってcabファイルにしました。デジタル証明書もテスト用 の物を使って作成しました。が、実際にサーバーに置いてみてインストールを しようとしても×マークが表示されてしまいます。マシンの中を検索 したらdllが見つからず、インストールすらされていません。 この場合どの段階でミスがあるのでしょうか。 インストールに失敗する条件等ご存知の方いましたら教えて頂けないでしょうか。
32 名前:デフォルトの名無しさん [2006/02/18(土) 10:59:05 ] >>31 そりゃインストーラ作成に失敗してるんじゃないの?
33 名前:デフォルトの名無しさん mailto:sage [2006/02/20(月) 10:33:51 ] だれか32bitとx64のocxをcabにまとめて、x64のIEでも 問題ないようにした人いる?
34 名前:31 mailto:sage [2006/02/20(月) 12:14:59 ] >>32 ありがとうございます。infファイルの記述がおかしいのかなと思い、 infファイルを右クリック、インストールをすると目的のディレクトリに ファイルがコピーされました。という事はhtmlだと思い、CLASSID等を 見直し、再作成を行いましたが、やはり問題解決には至りませんでした。 そして上記方法で分かった事が一つあります。infファイルから直接 インストールした後では、cabからのインストールは必要が無いので codebaseを除いたhtmlでも実行できるはずだと思い、htmlを開いてみると インストールしたファイルが消えてしまうのです。 開発したマシンではそのような動作はせず、他のマシンで行った時のみ 発生しました。この症状から何か原因わかりますでしょうか。
35 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 01:22:50 ] inf晒しきぼん
36 名前:31 mailto:sage [2006/02/22(水) 17:17:54 ] レスが遅れてしまってすいません。 今はとにかくatlをブラウザ上で実行させる事を第一としていまして ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_atl_ATL_Tutorial.asp ここのチュートリアルの手順2で作成されるDLLを設置しようとしています。 infの中身は以下の通りです。 [version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] Polygon.dll=Polygon.dll [Polygon.dll] file-win32-x86=thiscab clsid={968FA345-7B5F-4F45-9FDF-62953E203C48} RegisterServer=yes FileVersion=1,0,0,1 DestDir=11 情報が少なくて申し訳ないのですが、何か分かる事があれば教えて下さい。
37 名前:31 mailto:sage [2006/02/24(金) 18:23:17 ] 自己解決(?)しました。 infファイルは間違えていませんでしたが、プログラムでもレジストリに 登録するようにしないといけないのですね・・MSDNのサンプル見て分かりました。 配布関係の資料探してもVBのものばかりでなかなかVCのサイトって無いものですね。 また質問の繰り返しで申し訳ないのですが、実行させるHTMLの中にPARAMを使って 引数みたいな物を渡せますよね。そのPARAMで設定した <PARAM NAME="foo" value="bar">のような値をプログラム中で取得するには どうすればよいのでしょうか。プロパティというそれっぽいものがありますが いまいち理解が出来ず苦戦しています。苦戦ばっかりしてますが、どなたか ご教授頂けないでしょうか。
38 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 00:49:49 ] void CXxxCtrl::DoPropExchange(CPropExchange* pPX) { ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); COleControl::DoPropExchange(pPX); PX_String( pPX, _T( "foo" ), bar ); } IObjectSafetyについては自分でね
39 名前:デフォルトの名無しさん mailto:sage [2006/02/25(土) 03:17:28 ] >>37 ActiveXなら公開プロパティ作って、Javascriptとかで設定したほうが 簡単じゃないのか?
40 名前:デフォルトの名無しさん [2006/03/02(木) 16:42:15 ] Windows2000sp4+VC6sp6でダイアログボックスにフラッシュ(swf)ファイルを 表示(再生)するアプリを作ろうとしています。 色々調べてFlash8.ocxを使えばいいと言うのは分かったのですが プロジェクト→プロジェクトへ追加→コンポーネントおよびコントロールで コンポーネントおよびコントロールギャラリを開いて Registered ActiveX Controlsフォルダをクリックし、 Macromedia Flash Factory Objectをクリックすると 「ファイル C:\WINNT\system32\Macromed\Flash\Flash8.ocx は存在しません。」 とメッセージが表示されてしまいます。 フラッシュを再インストールしてみましたが状況は変わりませんでした。 解決方法がわかる方いらっしゃいましたら教えてください。 よろしくお願いします。
41 名前:デフォルトの名無しさん mailto:sage [2006/03/02(木) 23:34:48 ] >>40 Shockwave flashオブジェクトを使う。
42 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 02:08:21 ] >>31 さんの質問に便乗して質問します。 同様にVC++6.0で作成したActiveX(ocx)のcabファイルを作成してサーバにおいたところ、 ・ビルドしたマシン→ダウンロードOK(Download Program Filesにファイルあり) ・それ以外→ダウンロード失敗 (Download Program Filesにファイルなし。 Temporary Internet Filesに?CodeDownloadErrorLog〜ファイルができる) となるのは、どのような原因かヒントをいただけますでしょうか? ランタイムライセンスのあたりかと考えているのですが… ちなみにCodeDownloadErrorLog〜の中を見ると、エラーは Code Download Error: (hr = 8007007e) 指定されたモジュールが見つかりません。 (中略) ERR: Setup Failed Error Code: (hr) = 8007007e, installing: hoge.ocx to (null) destination code(0) となっています。
43 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 03:21:16 ] HTMLでローカルディレクトリ指定してるとか
44 名前:デフォルトの名無しさん mailto:sage [2006/03/04(土) 04:21:02 ] さすがにそれはなかったですが
45 名前:デフォルトの名無しさん [2006/03/06(月) 18:45:43 ] >>41 40です。 なるほど、ショックウェーブを選択するのですね。 うまく貼り付けることに成功しました。 ありがとうございます。
46 名前:デフォルトの名無しさん [2006/03/09(木) 07:50:17 ] Internet Explorer上からOLEで作成したExcelのイベントをフックしたいのですけど、やりかたがわかりません。 できませんでしょうか? Excelを作成して、JScriptからExcelのDOMを操作してセルの値の読み書きをする所まではできました。 が、Excel上での、BeforeSave等のイベントをトリガとしてJScriptの関数を実行したいのですができません。 擬似的に、setIntervalで1秒おき等にExcel上でのイベントに追随する事はできているのですが、 本当のイベントをフックすることができないのです。
47 名前:http://www.vector.co.jp/soft/win95/util/se072729.html [2006/03/18(土) 21:47:22 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
48 名前:デフォルトの名無しさん mailto:sage [2006/03/19(日) 00:11:49 ] なんの誤爆だよ。
49 名前:デフォルトの名無しさん [2006/03/26(日) 09:24:19 ] ActiveXコントロールを1から作成したいのですが、 全然資料がありません。 有用な資料(URL),書籍があったら是非教えてください よろしくおねがいします
50 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 12:26:24 ] >>49 言語とか処理系とか書かないとわからん。 そこらへんから選択中なのか?
51 名前:デフォルトの名無しさん mailto:sage [2006/03/26(日) 23:14:22 ] >>49 VC++使ってるならとりあえずウィザードで雛形作ってみて動作を確認しながら ってのが理解の近道なのかもしれん。 ほかの処理系は知らん。
52 名前:デフォルトの名無しさん [2006/04/09(日) 22:39:36 ] はじめまして。ぽこぶびと申します。 現在、VisualStudio2003のC++を使って COM、ActiveXコンポーネントを開発しておりますが いくつか疑問があるので質問させてください。 C++での開発はぜんぜん問題ないのですが、 VisualStudio2003でVB、C#でも C++のようにActiveX、COMコンポーネントの開発は 可能なのでしょうか? もし、可能なのでしたら、新規プロジェクトを作成するときに どのような手順で選択していったらスケルトンコードが作成されるので しょうか? どうかよろしくお願いいたします。
53 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 22:55:50 ] なぜ時代に逆行する
54 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 15:38:20 ] >>52 純粋なCOMコンポーネントは作れないが、.NETのクラスをCOMに公開することはできる。 regasm.exe というのを調べてみるといい。
55 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 00:11:40 ] >>46 と同じような話しなんだけれど、ActiveXオブジェクトのイベントってどこで起こっていて、どこに納められているのかわからない。 拾うだけならHTAっぽいアプローチで <object id="hoge" classid="〜〜"></object> <script for="hoge" event="on〜〜(foo)"> foo = 1 ? A : B; </script> とか出来るけれど、なんだかキモいので出来るだけJScriptだけでなんとかしたい。 var hoge = new ActiveXObject('progid〜〜'); だとどうやって取ればいいのだろう。
56 名前:デフォルトの名無しさん [2006/04/15(土) 10:02:04 ] >>52 と似たような質問なのですが、 たとえば JScript の中で new ActiveXObject などとして Outlook を操作したり出来ますよね。 あれと同じようなことを .NET アプリケーション (C++/CLI もしくは C# で作成を予定) で作成した アプリケーションでも実現できるのでしょうか? >>54 がそれに相当するのでしょうか?
57 名前:デフォルトの名無しさん mailto:sage [2006/04/15(土) 18:29:51 ] >>56 CLRからCOMの呼び出しはこの辺を使う。 Aximp.exe, Tlbimp.exe 普通はIDEで参照の追加-COMで自動生成してくれる。 VB.NETの場合はVB6との互換のためCreateObject関数もサポートしている。
58 名前:デフォルトの名無しさん [2006/04/15(土) 18:42:14 ] >>57 その逆で、Windows Scripting Host などから ActiveX コンポーネントを使うようなやりかたで、 .NET なアプリケーションも使うことが出来るものなんでしょうか? つまり、従来のCOM技術におけるオートメーションと同様のこと .NET なアプリケーション(CLR上で動くアプリケーション)でも 実現することが出来るんでしょうか?
59 名前:マイク ◆yrBrqfF1Ew mailto:sage [2006/04/15(土) 19:08:13 ] >>46 BeforeSaveがイベントなら普通に捕まえればいいだけじゃないのか
60 名前:デフォルトの名無しさん mailto:sage [2006/04/15(土) 19:50:03 ] >>58 それなら>>54 で出来る。多少制限はあるけどオートメーションレベルのことならほぼ問題なく動く。
61 名前:デフォルトの名無しさん mailto:sage [2006/04/15(土) 20:16:03 ] >>60 ありがとうございます。 果敢に情報収集しつつ精進します。 これができないと、たとえば Office が .NET Framework ベースに移行したとき、外からオートメーションで いじれないなんてことになるよなぁ、さすがにそんな 馬鹿な仕組みにはなっているまい、とおもってたんですが、 自分で試すにしても何から手を付けていいものか途方に くれてました(で、結局ネイティブで作り続ける日々)。
62 名前:デフォルトの名無しさん [2006/04/16(日) 14:12:09 ] [VBAからC#作成のDLLを呼び出したい] vsug.jp/tabid/63/forumid/53/postid/2604/view/topic/Default.aspx .NETの行く末は大丈夫なんだろうか?
63 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 15:04:30 ] COMはもうレガシーだからVistaや.NETなOfficeでは不要だろ
64 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 15:06:20 ] >>63 だからこそ COM で出来ていたことが 出来ないってのはこまるなぁ、って思う。
65 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 18:23:45 ] レガシーってことはそれよりも優れた方法があるってことでは
66 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 18:36:48 ] >>65 まぁ理想的にはそうなのかもしれん。 すべてのアプリケーションが CLR で動くなら。 ただ、そうじゃないアプリを切り捨てるのはたぶん無理そう。 なので多少のオーバーヘッドの増加には目をつぶるから 互換性確保してくれればな、って思う。
67 名前:デフォルトの名無しさん mailto:sage [2006/04/17(月) 13:44:34 ] >たとえば Office が .NET Framework ベースに移行したとき、 こうならないとアナウンスされてまつ。 M$は優れたドトネトを使わないから大丈夫。
68 名前:62 [2006/04/18(火) 23:00:15 ] >>67 Office12(2007)って、.NETベースじゃないんですか? リボンとか妙に(変に)凝ってるので、てっきり.NETベースだと思ってたんですが。
69 名前:デフォルトの名無しさん [2006/04/25(火) 23:19:14 ] C#からWordを操作したいと思っていろいろ試してます。 Rangeオブジェクトを使って find.Execute()して 文字列を検索したのですが、 見つけた文字列のページ番号や行番号を得る方法がわかりません。 どうすれば良いでしょうか?
70 名前:デフォルトの名無しさん [2006/04/26(水) 00:21:51 ] VBプログラマ Cプログラマのお仕事 www.vb-c.net/
71 名前:デフォルトの名無しさん [2006/04/27(木) 18:13:47 ] 良く分からん…。Office2007は.NET Frameworkベースなのか? www.exconn.net/Blogs/team03/archive/2006/04.aspx
72 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 09:48:55 ] >>71 単にC#でCOMコンポーネントを作ってるだけにも見えるし、 SQLServer2005のようにCLRのホスティングをしてるようにも見える。 さすがに全部.NETベースというのはありえないように思うが。
73 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 11:53:26 ] さすがエバンゲリオン役立たず
74 名前:71 [2006/05/01(月) 18:32:36 ] 一応、OLEオートメーションはサポートされるようでつ…。 www.itmedia.co.jp/enterprise/articles/0605/01/news010.html
75 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 22:36:49 ] C++で、ActiveXプログラミングを基礎から勉強するのに最適な本ってある?
76 名前:デフォルトの名無しさん mailto:sage [2006/05/09(火) 23:37:14 ] 今はDDEの時代だ
77 名前:デフォルトの名無しさん [2006/05/13(土) 06:41:34 ] VBScriptのGetObject()で.htmファイルを指定すると、HTMLDocumentオブジェクトが取得できます。 .xlsファイルを指定すると、Workbookオブジェクトが取得できます。 ここでレジストリをいじって関連付けを破壊すると、.htmファイルはオブジェクトが取得できなくなるのですが、.xlsファイルは取得できます。 これは.xlsファイルがOLE対応の特定のフォーマットを備えていて、中にCLSIDとかが書いてあるせいだと思うのですが、このようなファイルは何と言うのでしょうか? そしてそのフォーマット、あるいはファイルの作成法はMSDNライブラリのどこに書いてあるのでしょうか?
78 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 10:02:59 ] >>77 エクセルのファイルは「構造化ストレージ」になっている。
79 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 13:31:16 ] >75 DonBoxの"Essential COM"が一番良いと思います。 COM技術のイロハのイが学べます。 問題は、見た目の厚さに対して高い事。 まぁ、通読した後、高価の意味も理解できるけど。
80 名前:デフォルトの名無しさん [2006/05/14(日) 00:20:03 ] >>79 75じゃないがさんくす。
81 名前:デフォルトの名無しさん [2006/05/14(日) 00:42:38 ] そろそろ寝るか。。。
82 名前:デフォルトの名無しさん [2006/05/14(日) 05:01:35 ] このスレが気になって全然寝られなかった。。。
83 名前:デフォルトの名無しさん [2006/05/14(日) 06:59:29 ] VBAのコントロールにFlexGridが使えるようになってるんですが、 ADOでデータを取り込めますか?
84 名前:75 mailto:sage [2006/05/14(日) 08:20:38 ] >>79 あれから調べて「ATL COMプログラミング」という本を買いました。 これもなかなか良いです。 Essential COMとどっちを買うか迷ったんですが、 ATL COMプログラミングの方にはIE拡張の話が載っていたので。 Essential COMにもあったかもしれませんが。
85 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 12:09:25 ] Essential COMは良書だけど、図版とかが少なくてどちらかというと 玄人向けだから良いんじゃないすかね。 てか、COMでフリースレッド何たらとか使ってる人ってどれくらいいるんだろ?
86 名前:83 [2006/05/14(日) 21:09:23 ] Excelマクロフォームに、MSFlexGridコントロールのMSFlexGrid1と、 CommandButton1を貼り付け、 実行し、CommandButton1を押すと・・・ Private Sub CommandButton1_Click() Dim con As New ADODB.Connection,RS As New ADODB.Recordset Dim str As String,str2 As String str = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.Path & ";" & _ "Extended Properties=TEXT;" con.ConnectionString = str con.Open str2 = "Select * From Test.csv" RS.Open str2, con '実行時ココでエラー Set MSFlexGrid1.DataSource = RS RS.Close CN.Close End Sub 実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。 とでます。どうすればエラーを取り除くことができますか?
87 名前:86 mailto:sage [2006/05/14(日) 21:11:29 ] 書き忘れたのですが、Test.csvはこのExcelブックと同じディレクトリにあります。
88 名前:すみません86です mailto:sage [2006/05/14(日) 21:14:08 ] >RS.Open str2, con '実行時ココでエラー と書きましたが、これは誤りで、 次の行の Set MSFlexGrid1.DataSource = RS '実行時ココでエラー となります。
89 名前:デフォルトの名無しさん [2006/05/20(土) 05:54:11 ] Scripting.FileSystemObjectのTextStreamと同じものを作っているのですが、ReadLineの実装法が今一つわかりません。 fgets()を使う場合、すでにデータのサイズがわかっていないと読み込めません。 まさか、fread()やReadFile()で1バイトずつ(マルチバイトのテキストの場合)読み込んで'\r'や'\n'かどうか調べているのでしょうか? もし、HeapAlloc()やVirtualAlloc()等のメモリ取得関数に「残り全部を取得(予約)」というオプションがあれば、fgets()でできると思うのですが、そんなオプションないですよね? MFCやATLはよくわからないのですが、MFCやATLだったら簡単にできるでしょうか?
90 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 07:28:17 ] C++のstd::getline使ったらだめか?
91 名前:デフォルトの名無しさん [2006/05/20(土) 16:00:21 ] 市販のActiveX(OCX)をインポートして VC6でラップして市販のOCXと同じAPIを作ろうと思うけど、 (ようはラッパってやつですが。) そうすると、インスタンス作成時、 CoCreateInstanceでIIDとCLSIDがわからない。 MFC ACtiveXプロジェクトで作ってるのがわるいんだろうか? アト、ラッパでのActiveXイベントの伝達の仕方もわからん。。。 なんか、いい方法はありませんか?
92 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 16:42:04 ] 市販のActiveX(OCX)をそのまま使う
93 名前:デフォルトの名無しさん [2006/05/21(日) 00:03:29 ] >>89 1バイトずつ判断する。 読み込み自体は1バイトずつである必要はないけど。 >>91 レジストリエディタを検索すればCLSIDはわかるよ。 ActiveXイベントのラッピングは無理だと思うな
94 名前:デフォルトの名無しさん mailto:sage [2006/05/21(日) 01:05:16 ] シンクしてファイアー!とかは? ATLの場合の話だけど。
95 名前:デフォルトの名無しさん mailto:sage [2006/05/21(日) 01:21:33 ] あぁ、シンク忘れてた。 それならできるね。
96 名前:91 [2006/05/21(日) 09:51:22 ] シンクしてファイアーはできた。 #import ディレクティブ使って直接OCX指定したけど、 やっぱりIIDがわからない。CLSIDは取得できたよ。
97 名前:デフォルトの名無しさん mailto:sage [2006/05/21(日) 13:23:57 ] >>96 __uuidof (IHoge)で得られない?
98 名前:デフォルトの名無しさん mailto:sage [2006/05/22(月) 01:07:28 ] FirefoxのMacromedia Flashって、ActiveXではないのかな? 機能拡張じゃなく、ああいうプラグイン?を作るのってどうするんだろう。 スレ違いかもしれんが。
99 名前:デフォルトの名無しさん mailto:sage [2006/05/22(月) 01:59:24 ] XPCOMだっけ?
100 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 07:06:38 ] あるスレッドAでCoCreateInstance()等でインターフェースポインタを得たとします。これを別のスレッドBでそのまま使える保証はあるのでしょうか? 特にAが終了してしまった後など・・・ 保証が無いならば、使えるかどうか確認する方法、及び使えるようにする手続きはあるのでしょうか?
101 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 07:08:21 ] >>96 #importできるならタイプライブラリにIIDも書いてあるんじゃないの? OLEVIEWは?
102 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 11:15:48 ] >>100 インターフェイスへのポインタはアパートメント単位だから、別アパートメントへは持っていってはいけない。 msdn.microsoft.com/library/ja/jpdnmts/htm/ComPrim.asp support.microsoft.com/?scid=kb%3Bja%3B172314 CoInitialize/OleInitializeを使っているのなら、1スレッドが1アパートメントになっている。 OleInitialize(COINIT_MULTITHREADED);でMTAにすれば、 MTAのスレッド同士は同じアパートメントになる。
103 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 14:36:39 ] OleInitialize(0);
104 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 06:53:11 ] >>90 getlineできました! どうもありがとうございます。C++標準ライブラリがわかってなかった・・・ でもこれってどうやってメモリ確保してるんだろ? >>93 >読み込み自体は1バイトずつである必要はない ですね・・・でもバッファをリンクドリストにしてみたら、何かえらくややこしくなってしまった。realloc()だとコピー起きるっぽいし・・・ struct _BUFITEM{ BUFITEM *next; char buf[0x200]; } BUFITEM; ReadAllはgetlineで終端子を'\0'に設定したらできました。 今悩んでいるのが、LineとColumnプロパティ・・・ これもC++標準ライブラリにありますか? C++のヘッダって何が何だかさっぱりわからない・・・ MSDNライブラリも何か標準ライブラリ関係はおざなりだし・・・ 結局1文字ずつチェックしないといけないのだろうか・・・?
105 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 08:31:31 ] >>104 LineとColumnは流石にC++に相当するものは無いから、 何回改行文字が読まれたか、その後何文字読み込まれたかを自分で記録するしかないと思う。 ちなみにリンクリストはC++にstd::listがある。
106 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 12:33:52 ] >>46 >>55 ちょっとやってみた。 こういう.JS(WSH)は完全に動く。 Excel = new ActiveXObject("Excel.Application"); FSO = new ActiveXObject("Scripting.FileSystemObject"); Folder = FSO.GetFolder("C:\\"); WScript.Echo(Folder.Files.Count); Excel.InputBox("Hello"); こういう.HTMはFSOしか動かない。 <HTML> <BODY> <!-- Excel.Application --><OBJECT ID="Excel" CLASSID="CLSID:00024500-0000-0000-C000-000000000046"></OBJECT> <!-- Scripting.FileSystemObject --><OBJECT ID="FSO" CLASSID="CLSID:0D43FE01-F093-11CF-8940-00A0C9054228"></OBJECT> <SCRIPT><!-- Folder = FSO.GetFolder("C:\\"); alert(Folder.Files.Count); Excel.InputBox("Hello"); //--></SCRIPT> </BODY> </HTML> (ただし「インターネットオプション」のセキュリティ設定で「マイコンピュータゾーン」の「安全とマークされていないActiveXコントロール」を有効かダイアログ表示にしていないといけない。) で、なぜFSOしか動かないか。 レジストリをいじって「HKEY_CLASSES_ROOT\CLSID\{00024500-0000-0000-C000-000000000046}\InprocHandler32」キーを「_InprocHandler32」に変えたら動く。 (変えたらちゃんと元に戻しておいてね)
107 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 12:34:26 ] どうやら<OBJECT>タグは、CoCreateInstance(CLSCTX_ALL)をやっているらしい。レジストリ中でInprocHandler32の方がLocalServerより先に現れるからInprocHandler32があると動かないみたい。 new ActiveXObject()はCLSCTX_SERVERだから問題は起きない。まあオレのIE6.0+Excel2000以外では違うかもしれないけど。 で、46の環境でもオレと似たようなものだとしたら、46はタグは使っていないで、new ActiveXObject("Excel.Application")とかしているのではないか、と思われ。 それで、上のように無理矢理レジストリを書き換えるなどして<OBJECT>タグを使ったとしても、Excel.Applicationには実はある2つの問題があって結局イベント接続はできない。 詳しくは省略するが、簡単に言うとVBAだけを対象に作られていてアクティブスクリプトには対応していないのだ。 で、スクリプトだけでイベント接続できないのか、という事だが、これも無理なんではないかと思われ。 WSHの場合、わざわざWScript.ConnectObject()/WScript.CreateObject(,,)/WScript.GetObject(,,)というのをスクリプトホストが提供しているくらいなので、JScript.dllやVBScript.dllなどのスクリプトエンジンにはイベント接続の機能が無い。 なのでIEの場合は、IEからそのようなオブジェクトを提供してもらわなければならないわけだが、そういうものは見当たらないように思う。
108 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 12:35:40 ] >>94 >>95 >>96 「シンクしてファイアー」って何? ATLよく知らないんだけど・・・ 多分、イベントを代理で受け取って、同じ名前のイベントを発行する、って意味だと思うんだけど、合言葉っぽくなってるのはなぜ? 有名なセリフなの?
109 名前:94 mailto:sage [2006/06/04(日) 19:37:30 ] >>108 ごめん、前の会社の上司がふざけてよく「ファイアー!」って言ってたんで、 オイラもちょっと使ってみたくなって…。 ATLのイベント取得マクロがXXX_SINK_MAP、イベント発行(生成コード)関数が Fire_XXXとなるので、シンクしてファイアーでも何となく通じるのかも…。
110 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 19:57:53 ] You’re fired って言われたんだろ
111 名前:109 mailto:sage [2006/06/05(月) 21:47:39 ] >>110 "君は首だ!"なんて言われてないっすよ。 なんか、ATL好きの人だった…。質問する度に ATLのすばらしさを説かれてた…。 最近、.NETやらVistaやらで、COM作ってたベンダーって どうなってくんだろう?
112 名前:デフォルトの名無しさん mailto:sage [2006/06/05(月) 23:47:22 ] .netとかが主流になっていくだけで、COM事態は消えないでしょ。 いまだに16bitAPI残してるMicrosoftがそう簡単にCOM捨てるわけないよ。
113 名前:111 mailto:sage [2006/06/06(火) 23:19:36 ] >>112 でも、Vistaに味をしめて、MSが強硬路線取ったりしたらちょっと怖い。 いっそVistaが不発に終わってくれればと思ったりも…。
114 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 00:56:54 ] ExcelのオートメーションをMFC(VC6)でやってます プログラミングC++.NETvol2のP112のオートメーションで WorkBooks.Addの引数に1(workbooks.Add(COleVariant((short)1)))を渡して新しいワークブックを作成していますが WorkBooks.Addの引数でVBAで渡せる他の値( xlWBATChart、xlWBATExcel4IntlMacroSheet、xlWBATExcel4MacroSheet、xlWBATWorksheet) を渡すにはどのような値を渡せばよいのでしょうか? 本で紹介されている値1(COleVariant((short)1))は動作を見るとxlWBATWorksheetのようですがVBAでの定義を見ると Const xlWBATWorksheet = -4167 (&HFFFFEFB9) となっておりなぜ1なのかよく解りません・・・
115 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 09:50:14 ] 正常動作するほうを信じる
116 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 23:32:46 ] >>114 普通にワークシートを作成するだけなら引数指定なしでいいと思う。
117 名前:114 [2006/06/09(金) 19:57:52 ] >>115 なぜ1になるのかはよく解りませんがエラーが発生する理由はわかりました 想定外のワークシートが生成されたため、受信できないメッセージの受信に対し 例外が発生していました。値をいろいろ変更してみるといろいろな種類の ワークシートを作ることが出来ました。 とりあえず >正常動作するほうを信じる でいこうと思います >>116 >普通にワークシートを作成するだけなら引数指定なしでいいと思う。 VBAでは引数指定なしでも良いですが、MFC(C++)で呼ぶ場合、引数は要るのではないでしょうか ウイザードが吐いたコードには引数指定がありますし、そのウイザードのコードを変更して 引数無しverを作って試した場合、ワークブックが作成されませんでした どうもありがとうございました
118 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 21:24:24 ] >>117 引数無しにしたいときは、 COleVariant vNull; vNull.vt = VT_EMPTY; なんてのを 作って渡しておけば良いよ。
119 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 20:19:21 ] >>102 どうもありがとうございます! やっぱりアパートメントどうのか・・・ 以前「Platform SDK: COM」文書でアパートメントの所を読んだのだけれど英文の事もあって何がなんだかサッパリわからなかった・・・ 以下の文書には気づいてなかった・・・ ttp://msdn.microsoft.com/library/ja/jpdnmts/htm/ComPrim.asp ttp://support.microsoft.com/?scid=kb%3Bja%3B172314 で結局この文書でも、まだよくわからない・・・OrZ 一応まだ読んでいる途中ですが・・・ で、KB172314の下の方を見たらリンクがあって、探してみたら多少わかりやすい感じがしないでもないものが。 ttp://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp150%2F7%2F77%2Easp&LN=JA しかしこの一番分かりやすいと思われる文書だけがMSDNライブラリCD版からは抜け落ちているのだった・・・OrZ 上のKB172314と同じものはあるから、そこからリンクされているのにリンク先の文書が無い。何の嫌がらせなのか・・・ MTS文書にはまだ続きがあるみたいですね・・・でも上の文書からは直接リンクされていないのであった・・・ 勉強してみます・・・ CoInitializeEx(NULL, COINIT_MULTITHREADED)を使ってみましたが、まず、失敗するケースを作り出せないので、効果のほどがわかりません。試した範囲では別スレッドでもポインタが使えてしまっています。 CoInitialize(NULL)だと確実に失敗する状況ってどういうのですかね・・・?
120 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 22:25:24 ] >>55 スクリプトだけで何とかするコンポーネントを作ってみた。 SCON001.LZH:IEやHTAなどでWScript.ConnetObject()と同じ機能を実現 ttp://winscript.s41.xrea.com/upload/source/No_0006.lzh みんながExcelを持っているとは限らないし、IE関連オブジェクトを使ってみた。 サンプルでは例えばIE提供のdocumentオブジェクトにスクリプトだけで接続している。と言っても、関数オブジェクトをプロパティに代入するのとは違うよ。 他に適当なオブジェクトが思いつかなかったので、他のサンプルではIEからIEを呼び出す、というヘンな事になったりしてるけど。 まあIEからだけじゃなくて、HTAでも実行してみて頂。その方がセキュリティ設定が面倒でないし。 あと意味ないけどWSHからも使用できる。多分どんなスクリプトホストからでも使用可能なんじゃないかと思うけど。 ちなみにIE相手にこれを使うにはコンポがもう一つ必要。IEがクラス情報をサポートしてないのでこれを修正する。documentは必要なし。 WWCI002.LZH:WScript.ConnectObjectできないオブジェクトをConnectObject可能に ttp://winscript.s41.xrea.com/upload/source/No_0004.lzh で、問題のExcelなんだけどこれにはさらにもう一つコンポが必要なんだよね・・・今準備中。 そうそう、セキュリティ設定に「マイコンピュータゾーン」を出現させるのは以下。まあHTA使えばいいんだけど。「ダイアログ表示」ならまだしも「有効」だとアブナイし。 >HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0 >および、 >HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0 >キーの、"Flags"というDWORD値を"1"にします。 なお、みんな、チラ裏っぽいけどゴメンしてね。 >>118 IDispatch::Invokeの仕様からすると、VT_EMPTYとdispparams.cArgs = 0とは違うように思うんだけど?? VT_ERRORはその後に何か来る場合だけだし・・・
121 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 12:24:42 ] IEの上でxls,pdfを開くとExcelやAdobeReaderがActiveXコントロールとして開きますよね。 あんな風に独自のActiveXをIE上で開きたいんですが実現方法がわかりません。 ActiveXコントロールはHTMLにobjectタグを使って貼り付けられますが、 ExcelやAdobeReaderはそうやって実現しているようじゃなさそうです。 IWebBrowser.Documentで、IHTMLDocumentではなく、ExcelやAdobeReaderのインタフェースが返ってくるようなので。 Documentプロパティの中の人を自分の作ったインタフェースに置き換えるのはどうやるんでしょう?
122 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 16:09:31 ] >>121 そういうのはインプレースアクティベーションと言うらしいから、 それでググってみたらどう?
123 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 12:45:05 ] >>120 >IDispatch::Invokeの仕様からすると、VT_EMPTYとdispparams.cArgs = 0とは違うように思うんだけど? パラメータがどう省略可能なのかは先方の実装次第なのは確かなのだけれども、 伝統的な VB のような、パラメータの途中のいくつかを省略可能な言語での 利用を考慮したオブジェクトなら VT_EMPTY で当該パラメータなしとなりますよ。
124 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 22:47:13 ] WIN板WSHスレの神、Mはいまだに「オートメーションオブジェクト」はアプリの手動操作の代わりをするオブジェクトの事を指すと思ってるみたい。 例えばInternetExplorerオブジェクトはオートメーションだが、documentオブジェクトはそうじゃない、みたいなこと以前書いてたけど、まだ直ってないみたい。 神の連載記事 ↓ チェック式 WSH入門 <BR> ―― 演習方式で身につけるWSH超入門 ―― 第1回 WSHを始めよう ttp://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_01.html >>114 >ExcelのオートメーションをMFC(VC6)でやってます で、この書き込みを見るとうっすら同じような誤解を感じるのだが・・・気のせいか?
125 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 23:52:55 ] >>124 kwsk
126 名前:114 [2006/06/13(火) 00:51:02 ] 114です >>ExcelのオートメーションをMFC(VC6)でやってます >で、この書き込みを見るとうっすら同じような誤解を感じるのだが・・・気のせいか? 実はまだよく解ってないんですよ WSHも名前だけは聞いたことあるけど使ったことないし この前MFCの勉強を始めたところだし・・・ ちょうど読んでる本のオートメーションの章を読んでる所だったので 「ExcelのオートメーションをMFC(VC6)でやってます」 って書き方になりました でも頭の中のイメージでは 「アプリの手動操作の代わりもできるオブジェクト(インターフェース?)」 ですね。確かに
127 名前:121 mailto:sage [2006/06/15(木) 22:38:00 ] >>122 あれからいろいろ調べてAcitve Documentのサンプルも試してみた。 htmlの中にembededされたActiveDocumentを開くのではなく、 Active DocumentをBHOからプログラムで開きたいのだが、 どうすれば良いのかわからない・・・
128 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 19:52:44 ] >>12 たぶんもうできたろうけど、作ってみた。単にマウスカーソルが進入可と禁止とに変わるだけだけど。 RJCT001.LZH:OLEドラッグ&ドロップサンプル(C++):特定の拡張子以外を拒否 winscript.s41.xrea.com/upload/source/No_0009.lzh しかし何だよコレ・・・ Win2000を使ってるんだけど、日本語がファイル名に混じっていると、CFSTR_FILENAMEAで正常にファイル名が取得できない。特に拡張子が消える。 おかげで9x対応にするために長くなってしまった。95、98、2000・・・XPはどうだか知らんけど、MSの日本語部隊には給料貰う資格ないと思う。 なおコードへの突っ込み歓迎・・・(^^;)
129 名前:デフォルトの名無しさん [2006/06/18(日) 15:32:40 ] いまさらだけどさ、 スクリプトで利用できるコンポーネントを作ってもさ、 レジストリいじらなちゃなんないからユーザーとしては なるべく入れたくないよな。 スクリプトで dll を指定できるとかレジストリより先に 同じフォルダの dll を先に見てくれるとか、そういうなにか (もっと穴のない手段があればそれで)ないのかね。 マジでインストールしたくない。ほんとなんとかならんのかな。 だいたいインターフェース不変で実装のバージョンの変更を 安全に行うみたいなの(意味をくみとっておくれ)って 上手く機能してるのかな。 個人的にかもしんないけど、スクリプトとかからオブジェクトとして 簡単に使用できるインストール不要の動的ライブラリがほしい。 どうなのそういうの
130 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 15:41:20 ] >>129 M$もXPでSxS(サイドバイサイド)を持ち出してきたところまでは よかったと思うんだけど、.NETへの方向転換で、COMをレジストリなしに 使う技術に関してはおざなりになってるような…。 SleipnirプラグインやWindowsゲームプログラミング本では、COMライクな バイナリ実装を行っているようですな。
131 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 17:21:46 ] >>121 おお。オレもそれすっごく興味ある。できたら教えて下さい。 ファイルの拡張子関連付けのレジストリ設定ってあるじゃん? あれって2段階になってて例えば.htmの場合、これがhtmlfileを参照してる。 でここにHTMLDocumentオブジェクトのCLSIDが書いてあるんだよね。 だから独自のドキュメントファイル拡張子を作って、それの対応レジストリにCLSIDを書いておけば、IEがそのドキュメントを読み込もうとした時にサーバーが呼び出されてオブジェクトが生成されると思うんだよね。 そうしたらIEがオブジェクトに対してIOleObjectとかIOleControlとかIOleDocumentとかをQueryInterface()してくると思うから、それに対応できれば.xlsや.pdfと同じような事ができるんだと思う。ちなみにワード文書(.doc)とかもできるみたい。 >>123 いつもIDispatchを生の状態で実装したDLLサーバーをスクリプトから動かしてくるんだけれど、スクリプトエンジンは、途中省略の場合VT_ERRORを入れてくる。 VBでもC++でも(この場合コントローラって事ね)IDispatch::Invokeを使うのであればこれは同じようにしなければならない。(カスタムインターフェースを使えば違う) cArgs=0の場合は基本的にrgvarg=NULLなのでパラメータはこの世に存在しない。 VBやMFCのディスパッチマップとかを使ってコンポーネント(サーバー)を製作している場合の話を言っているのかな、と思うけど、 その場合は、メソッド処理ルーチンから見ればcArgsなんて存在しないし、パラメータに何かは入ってなきゃいけないから、デフォルトがない場合バリアントのパラメータはVT_EMPTYだと思う。あればその値。 だけどコントローラがInvokeを使っている場合にはVT_EMPTYを入れてるのはコントローラではなくてコンポーネント内部のディスパッチマップハンドラだからね? で114は引き数なしでもやってみた、って言ってるからメソッドに引き数無しのオーバーロードが存在するんでしょう。 であれば、「VBAで引き数無し」と同じ事をやる場合、114がやったように引き数なしでコールするのが正しいんじゃないか、と思うんだが。
132 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 18:59:19 ] おまいら長文すぎ
133 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 19:32:20 ] >>114 Excelのカスタムインターフェースを直に呼んでみた。(ヘッダがいいかげんだけど気にしないで(^^;)) XLASMP1.LZH:Excelのカスタムインターフェースを利用するサンプル(C++) winscript.s41.xrea.com/upload/source/No_0011.lzh Addメソッドのプロトタイプはこんな感じ。 STDMETHOD(Add)(VARIANT Template, long lcid, IWorkbook** RHS) = 0; //'Workbook'インターフェースを'IWorkbook'に変えてある。 そうしたら、ワークブック作成が成功するのはVT_EMPTY、でなく、VT_ERROR / DISP_E_PARAMNOTFOUND、だね。 MFCのディスパッチマッパーは省略の場合途中でなくてもVT_ERRORを入れる、ということか。VBではVT_EMPTYだと。 MFCだとウィザードはCOleVariant型を引数にとるテンプレかオーバーロードを生成しているみたいだけど、生のインターフェースはVARIANT型。戻り値がHRESULTなのも違う。 これ(MFC)はカスタムインターフェース(アーリーバインディング)になってるのかな? だから必ず同じ結果になるとは言わないけど、114、VT_ERRORで試してみて。なお、vt=VT_ERRORするだけでなくて、ちゃんと省略を表すエラーコード、scode=DISP_E_PARAMNOTFOUNDを入れないと動かないから。 で、確かに1でもできるね・・・これ何なんだろ。レガシー定数だとか。他の定数が3,4になってて1,2が抜けてるのがそれっぽい。昔の文書とかには1が書いてあるのかも。
134 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 20:14:17 ] >MFCのディスパッチマッパーは省略の場合途中でなくてもVT_ERRORを入れる、ということか。 あっ。これってExcelがMFCで作られた、と仮定しての事ね。ATLなのかも。
135 名前:デフォルトの名無しさん mailto:sage [2006/06/20(火) 22:08:54 ] >>129 これじゃダメ? winscript.s41.xrea.com/upload/source/No_0012.lzh
136 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 01:15:13 ] >>130 さん どうもです。知りませんでした。無知。 >>135 さん もしかしてアップローダーのサイトの方ですか? そうだとしたらあのサイトにはたびたびお世話になってます。 No_0012.lzh ありがたく頂きます。 ただ、他人に配布するスクリプトとバイナリの組だと、やっぱりインストールが…。 しかし、あんなこともできるんですね。 ありがとうございました。
137 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 19:23:26 ] 質問です。 Excel2000をVC++6のMFCからオートメーションで操作しているのですが、 フォントの設定が上手くいきません。 書き込む文字列は、英数字と中国語の混合で、フォントはSimSunに 変更しようとしています。 _tSetlocale()でロケールを変更した後、マルチバイトの中国語データを読み込み ワイド文字に変換します。(mbcstowcs) Rangeオブジェクトを取得し、SetValueで値を書き込み、 Rangeオブジェクトを取得しなおし、GetFontでFontオブジェクトを取得し、 SetNameでフォント名を代入したんですが、アルファベットのみフォントが 変更され、その後に続く漢字文字列はどうも上手くできていないようです。 エクセルを立ち上げてみてみると、 一部文字化けしています。(「・」になって表示されてます) セルをダブルクリックするとエクセルがフォントを自動で変更するみたいで、 英数字はSimSunで、その後の漢字はMSPゴシックや、ArialUnicodeMSなどに 変更されます。その際に文字化けは直るので、 データはUnicodeで壊れずに書き込めています。 右クリック、書式の設定からフォントを変更すると、 漢字もきちっとSimSunに変更されるのですが、 オートメーションからはどうやればいいのでしょうか?
138 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 20:41:32 ] >>137 自己レス。結局解らなかったので、標準フォント(StandardFont)を 変更することで対応しました。
139 名前:デフォルトの名無しさん [2006/06/24(土) 12:37:34 ] Internet Explorerで表示しているページを 印刷するには、どのオブジェクトのどのメソッドを使えば良いか教えてください。 perlからWin32::OLEを使ってコントロールしていますが、 $IE->{Document}->PrintPreview(); $IE->{Application}->PrintOut(); 等やっても上手く動きませんでした
140 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 15:52:48 ] >>28 もうわかったろうけど一応。 ここで指定しなければならないのはSAFEARRAY型じゃなくて、IDispatch *型、すなわちオブジェクト。 JScriptに配列は無い。Arrayオブジェクトは配列ではなく、あくまでオブジェクト。 >>132 ゴメン。技術話なんで正確に書こうと思うと長くなっちゃうんだよね・・・
141 名前:デフォルトの名無しさん mailto:sage [2006/06/24(土) 18:11:43 ] >>136 他人にソフトを配布したいんならEXEを作ればいい。スクリプトではまともなソフトは作れっこない。 スクリプトでなきゃいけない、という理由がよくわからないのだが・・・ VB.NETとかで作ればいいのではないだろうか。 #実は登録の全くいらない方法もある事はある。 >>139 うーむ。PerlスレとかWSHスレで聞くべきと思われ。 でもスクリプト野郎って人間がオカシイのが多いからオレは聞くの嫌なんだが(^^;) で、印刷はExceWBでできるらしい。
142 名前:デフォルトの名無しさん [2006/06/24(土) 22:04:03 ] >>141 ExecWB()ですね。試してみます、ありがとうございます。 Excelオブジェクトなど具体的なオブジェクトの使い方は どの言語からOLEサーバ?を使うかということには依存しないと思います。 スクリプト(インタープリタ系)の言語だろうが、C#だろうがJavaだろうが。 このスレのコミュニケーション上の理由で、表記方法を定める必要があるなら、 C#やVBあたりに決めても良いと思います。
143 名前:デフォルトの名無しさん mailto:sage [2006/06/25(日) 23:19:37 ] >>141 EXEを作ればいい たしかにそうかもしれないです。 でも、一通りの機能をDLLに作っておいて配布し、 スクリプトでそれを不特定多数が利用するということも できるんじゃないでしょうか。 例えば軽いノリの3Dゲームまがいの何かをつくりたい時、 3Dの初期化・表示・当たり判定・その他なんかをdllに しておければなあ、とか考えたんです…。 あとは自作ツールのスクリプト作成にWSHを利用するとか。 けっこう同じようなこと考えてる人は多いかと思ってたんですが、 そうでもないのかな? 思いつきなので、ダメなこといってるかもしれないですが…。
144 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 23:41:07 ] >>143 ああ、ゴメンなさい。 そこまでの話とは思わなかった。 EXEだと、インストール不要なものはコマンドラインツールとか単純な使用に特化したものが多いんで、そういう話かと思った・・・ というか、そういうの作って公開して下さい。欲しいので。お願いします。
145 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 23:43:40 ] >>142 >Excelオブジェクトなど具体的なオブジェクトの使い方は >どの言語からOLEサーバ?を使うかということには依存しないと思います。 >スクリプト(インタープリタ系)の言語だろうが、C#だろうがJavaだろうが。 依存するんだな。それが。 少なくともIDispatchを使うかカスタムインターフェースを使うかによっては違うのは上のWorkbooks.Add()でゴチャゴチャしたのを見ればわかるだろ? まあそれは置いといて、このスレは大凡 1. コンポーネントを製作 2. コンパイラ系言語からのコンポーネント使用 を扱う為にあるものと思われ。 スクリプトで使うコンポーネントを作りたいとか、スクリプトホスト/エンジンを作りたい、というのならいいと思うが、スクリプトからコンポーネントを使うだけならばスクリプトのスレで聞いた方がいい。 別に意地悪してる訳じゃなくて、コンポーネント作者やC++プログラマにはスクリプティングや個々のコンポの使い方にそれ程興味が無いのが普通だから、ここではそういう情報が得られる可能性が低い、という事。
146 名前:デフォルトの名無しさん [2006/06/28(水) 01:37:42 ] どのオブジェクトに、どのメッセージを投げるかという話ならば 言語には依存しませんよね。 このレベルでも十分に有用です。 どのスレで扱うと、必要な情報が得られる可能性が高いかという問題は、 統計をとるわけではないし、スレ住人も入れ替わるので、 推測の域を出ません。議論したところで正しい答えは得られませんね。
147 名前:デフォルトの名無しさん [2006/07/01(土) 15:26:32 ] 今日、ふとWebで楽しいプログラムを動かしたいと思って、ActiveXを始めてみた。 (Visual Studio.NET 2003のMFC ActiveXプロジェクト) さっそくWebページからの値の引渡しができない・・・ <PARAM name="Hoge" value="****"> って感じ指定したプロパティの値は、プログラム側ではどうやって取り出すの??? IDL???にプロパティとしてHogeを追加したら、GetHoge, SetHogeっていうメソッドができたんだけど、 Webページ表示時にSetHoge(LPCTSTR newVal)の newValに値が入ってくるかと思いきや、 メソッドそのものが呼び出されてない・・・。 どっかわかりやすい解説サイトないものか(´Д`;)
148 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 20:32:05 ] これスクリプトからExcelに接続するためのコンポね。以前に言ったから。 winscript.s41.xrea.com/upload/source/No_0013.lzh
149 名前:デフォルトの名無しさん [2006/07/01(土) 22:33:22 ] 解決した。ホントさくんす。 PX_String書いてなかったわ。。。
150 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 22:51:11 ] >>147 余り参考に成んないと思うけど(^^;)、 オレもVB5CCEを使ってActiveXコントロールを作り、以下のHTMLを実行してみた。 <HTML><BODY> <OBJECT ID="Ctrl" CLASSID="CLSID:..."><PARAM NAME="X" VALUE="123"/></OBJECT> <SCRIPT LANGUAGE=VBScript><!-- MsgBox Ctrl.X : Ctrl.X = 456 : MsgBox Ctrl.X '--></SCRIPT> </BODY></HTML> で、<PARAM>の方はまったく動作しないけど、<SCRIPT>の方はちゃんと動作している。 <PARAM>タグの「プロパティ」ってどういうものなのだろうか? VB5CCEでも設計時ユーザーがオブジェクトに設置するプロパティ以外に、コントロールの画面プロパティというのがあってこれはスクリプトでアクセスすることはできない。 が、CヘッダやSDKドキュメントを見るとActiveXコントロールには予約DISPIDみたいのがあってこれで設定できるような感じがあったりする。(って試せばいいんだが(^^;)) <PARAM>タグの場合、何かオブジェクトの公開プロパティとは別のプロパティなのだろうか? あるいはコントロール側が何か特別なインターフェース、IDispatchExとかIProperty何とかをサポートする必要があるのかも。
151 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:00:37 ] バロス
152 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 18:45:19 ] 何か無知な事書いてしまったけど、Tabular Data Controlが<PARAM>タグが通用するみたいなので、このオブジェクトを少し調べてみたけど、ますますわからなくなった(^^;) <Tabular Data Control> CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83" <通用するプロパティ> DataUrl/UseHeader/TextQualifier <PARAM>タグが通用しなかった自作コントロールとは、サポートしているインターフェースが微妙に違うんだけど、それが原因かどうかよくわからない。 (例えば自作コントロールはIQuickActivateやIDataObjectをサポートしているんだけど、Tabularはサポートしていない。) Tabulerでも、WSFで<OBJECT>タグを使用した場合、<PARAM>が通用しなくなる。 WSFの場合はHTMLの場合と比べてなぜかサポートするインターフェースがぐっと減っている。IDispatchExとかIOleCommandTargetがサポートされなくなる。 これはインプレースアクティベートされていない事が原因ではないかと思うけどはっきりとはわからない。オブジェクト生成の方法が違うからかも。 後はもうオブジェクトをラップして調べるしかないと思うけど、サポートされているインターフェースが多いので大変だな・・・ というか何か急に梅酒飲みたくなった・・・
153 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 16:32:51 ] プロパティは IPersistPropertyBag 経由で設定されます。 ATL なら PX_hogehoge で簡単に実装できる。
154 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 22:33:53 ] VS2005でクラス→ATLコントロールでウィザードからコード作成。 メッセージマップにOnCreateを追加したけど、 なぜかOnCreateが呼ばれない・・・ OnSetFocusは呼ばれるんですが。 心当たりある人いますか?
155 名前:154 mailto:sage [2006/07/04(火) 23:41:51 ] 自己レス。コンストラクタで m_bWindowOnly = TRUE; とすれば呼ばれるようになった。 他にもm_うんたらを初期化してて、これだけ親クラスのprotectedメンバだと気づかなかった。
156 名前:デフォルトの名無しさん [2006/07/07(金) 00:50:13 ] ワードアートなどのOleObjectをなんでも貼れるようなアプリケーションを作りたいのですが、 とりあえず、何から手をつければよいのでしょうか? 資料が少なくて困っています。
157 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 19:46:51 ] ラップしてトレース!した。 なるほど。やっぱりオートメーション(IDispatch&カスタムインターフェース)とは別のインターフェースからアクセスできるプロパティだったのか。オートメーションからもアクセスできるみたいだけど。 しっかしこのインターフェース、COM文書には殆ど何も出てなくてリファレンスはInternet Development文書の方にある。 オレが自作コントロールで<PARAM>でアクセスできなかったのはウィザードを使わずにプロパティを設置したからで、なぜかウィザードを使って設置したらアクセスできる。 うーむ。VBにせよATL/MFCにせよ、ビジュアル開発環境って何をやってるのかさっぱりわからん。 で、WSFの場合だけど、これはそもそも<PARAM>があってもWSHは何もしないようだ。 つかこのスレ居るとどんどん知識が増えてく〜
158 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 20:37:14 ] >>153 てか、もう書いてあったのね・・・OrZ オレは全部自分で実装してる。多分ATLだとラップも簡単なんだろうね。
159 名前:デフォルトの名無しさん [2006/07/09(日) 11:37:10 ] MFC + ActiveXで書いてるんだけど、 WriteProfileString系でレジストリに書き込むとドコに書かれるの? 次に起動したときに前回の状態を復元するようなことをしたいんだけど。 COleControlにSave()とかLoad()とかそんなメソッドがあるけど、これ使うのか・・・?
160 名前:デフォルトの名無しさん [2006/07/09(日) 12:04:42 ] >>159 ActiveX使ったこと無い素人だからあってるかどうか解らんけど、 レジストリに書き込むんだからレジストリに書くんじゃないの? 前回の状態って何を復元するの? 見当違いならスマソ。 CString strSection = "My Section"; CString strStringItem = "My String Item"; CWinApp* pApp = AfxGetApp(); //WriteProfileStringでレジストリに"test"を書き込む pApp->WriteProfileString(strSection, strStringItem, "test"); CString strValue; //GetProfileStringでレジストリから読み込む strValue = pApp->GetProfileString(strSection, strStringItem); ASSERT(strValue == "test");
161 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 21:56:39 ] >>156 ATLがいいんじゃないかと思うんだけど、オレはATLよく知らない。誰か教えてあげて下さい。 SDKレベルでインプレースアクティベートする方法なら少しは知ってるけど誰も必要としてないよね・・・OrZ・・・ >>159 MFCよく知らないけど、WriteProfileStringはレジストリじゃなくてINIファイルに書き込む。ってこれActiveXじゃないんじゃないか? あと、COleControlにそんなメソッド見当たらないぞ??
162 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 21:07:17 ] >>161 レスありがとうございます。 とりあえず、OClientというOLE(ATL?)のサンプルを参考にして実装中です。 とりあえず、わけもわからず組んでいるのですが、 ドラッグアンドドロップはできても、Oleオブジェクトはドキュメント(CDoc?)とビュー(CView?)があるウィンドウでないと 作成されないようだ(Oleオブジェクトを作成するための関数の引数に入れる情報が足りない)ということがわかりました。 やりたいことはダイアログウィンドウにOLEオブジェクトを貼り付けたいので ダイアログウィンドウにCViewを貼り付けて実装中です。 そのときダイアログウィンドウ→CFrameWnd→CViewという順番で作るといいという 情報をつかんだまでがここまでの話ですw では、できたらまたきますw
163 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 00:46:29 ] で、 >ダイアログウィンドウ→CFrameWnd→CViewという順番で作る と、今度はOnInitialUpdateが降ってきませんw OnInitDialogでこんな↓感じで頑張ってみましたが、 CxxxxView* pView = (CxxxxView*)GetDlgItem(AFX_IDW_PANE_FIRST); pView->SendMessage(WM_INITIALUPDATE); タイミングが速すぎるようでまるで駄目でしたw なのでOnDrawあたりにフラグつけて、COleDropTarget::Register(this)を突っ込んでおきましたw だんだんツギハギ感が出てきていい感じになってきましたw ここまでで、ダイアログウィンドウにCFrameWndつけて、CViewつけて、DnDができるようになりました。 あとはOClient参考にしてOleオブジェクトをおけるようにするだけです。 では、できたらまたきますw
164 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 22:52:49 ] で、どうなったかというと、結局できませんでした。 なんかCViewを作って貼ればいいとかいう単純な理由では無いっぽいです。 強引にやろうとすると、 ドラッグ&ドロップをしてデータを受け取ろうとするところでハングアップします。 それ以降もOleObjectを作成しようかというところで頻繁にCViewやらGetDocumentから 取得する内容を引数に要求されます。 じゃあ、ダイアログベースのウィンドウではOleObjectを貼りつけることはできないのか? と、思いCViewとCFrameWndとCWinAppから派生するものでドキュメントをこさえようとしてみるものの失敗。(作成できない?) そもそもダイアログベースのアプリでそんなもの作成できるのかどうかも不明なので何が正しい処理なのかも不明。 というわけで、OClient以外の資料も無いので手詰まりな状態です 見た目どうみてもウィンドウハンドルさえあればどこでもくっつけられるような感じなのに納得いかないです。 OLEを理解できてないだけっていう気もするのですが、これ以上やろうと思うと根っこの部分からの理解が必要な気がします。 なんかいい資料ないでしょうか?つーか、だれか助けてください・・・orz
165 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:46:17 ] >>162-164 OCLIENTはMFCだね。 オレは詳しくないので、誰かMFCに詳しい人が教えてくれたらいいんだけど、 他にレスがなかったらMFCのスレで聞いてみれば?
166 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 00:08:51 ] >>165 でも、そのソースのメインディッシュはOLEなんですよ。 あ、でも、MFCの方から調べてみるってのはやったことなかったです。 いままでATLとかOLEとかしか調べてなかったです。 MFCのスレの方でも聞いて見ます。 ありがとうございました。
167 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 20:34:40 ] もう終わった話だろうけどシリーズ。 >>19 >>20 >>21 一応そんなような事やってみた。超テキトーだけど。 <<TABB.VBS>> Set ie2 = CreateObject("InternetExplorer.Application") ie2.Left = 320 ie2.Width = 300 Set ie1 = WScript.CreateObject("InternetExplorer.Application", "ie1_") ie1.Left = 0 ie1.Width = 300 ie2.Visible = True ie1.Visible = True ie1.Navigate "www.google.co.jp/" ie2.Navigate "about:blank" Do While ie1.Busy Or ie1.ReadyState <> 4 Loop Set doc = ie1.Document Set doc.onclick = GetRef("doc_onclick") Quit = False Do While True If Quit Then Exit Do End If WScript.Sleep 100 Loop ie2.Quit
168 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 20:35:12 ] Function doc_onclick Set ev = doc.parentWindow.event if ev.srcElement.tagName = "A" Then ie2.Navigate ev.srcElement.href ev.returnValue = False End If End Function Function ie1_OnQUit Quit = True End Function HTML内にWebBrowserコントロールを<OBJECT>で貼り付けてもみたんだけど、なぜかイベントがキャッチできないんだよね・・・
169 名前:デフォルトの名無しさん [2006/07/18(火) 03:08:28 ] VC++ .NET2003でHTMLサムネイル作りたいんですが Webvw.dll内ThumbCtrlのラッパークラスを作ってトコまで行ったんですけど、用意されたメソッドの動作は 実際に一つずつ書いていって確かめていくしかないですか?全く資料がみつからないんですけど・・・
170 名前:デフォルトの名無しさん [2006/07/20(木) 08:13:26 ] OLE/COMってそろそろなくなる? 3年かけてようやく理解したんだがorz
171 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 08:35:08 ] MSのアプリの機能拡張的なものを作るんだったら しぶとく生きるんじゃないか。
172 名前:デフォルトの名無しさん [2006/07/20(木) 18:57:47 ] Office用拡張として使われるうちは大丈夫じゃね? Office2007はどうだろ?まだ見てないや
173 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 00:22:35 ] ここまで念入りに作ったシステムをそう簡単には捨てんだろ。 だっていまだにWin16APIだって残ってるんだぜ?
174 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 03:07:35 ] html/hta とかのデータバインド用に カスタムデータソースオブジェクトを作るための 情報って何を見ればいいか知ってる方いらっしゃいますか?
175 名前:174 mailto:sage [2006/07/22(土) 00:46:42 ] 具体的には、javascript でローカルの .mdb を処理する データソース準拠のオブジェクト作って、それをテーブルに バインドできたら嬉しいな、とか思ってますけど、 やっぱCOMコンポーネントを作らないとだめだろうなあと 予想はしてます。 なんとか英文のリファレンス的のものくらいは見つけたんですけど、 チュートリアルとかもないようだしどうしていいやら…。
176 名前:デフォルトの名無しさん [2006/07/22(土) 10:12:02 ] ActiveXコントロールを作ったんですが、 HTMLのobjectタグでIE上に、このコントロールを表示したとき、 コントロール側からIWebBrowser2を得る方法ってありますか?
177 名前:176 mailto:sage [2006/07/22(土) 11:27:38 ] ttp://support.microsoft.com/kb/257717/ ここにあった。けどこのままだとアサートした。 関数内で __super::SetClientSite(pClientSite); って親クラスのをコールしたら、アサートしなくなったけど・・・ いいのかな、これで。
178 名前:デフォルトの名無しさん mailto:sage [2006/07/24(月) 23:23:02 ] VB6でイントラネット向けのActiveXコントロールを作成しています。 IEのダイアログが煩いで、安全マークをつけたいのですが、 下を読んでもIObjectSafetyの実装方法が全く解りません。 support.microsoft.com/default.aspx?scid=kb;ja;182598 またCABに署名したいのですが、 ファイル署名ツール (Signcode.exe) がVC++のCDに入っておらず、 MSのサイトからもDLできそうにない。 どなたかヒントください。
179 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 00:02:18 ] >>178 >安全マーク そこに書いてあるとおりにやればいいんじゃないの? なにがわからんの? >signcode.exe .NetSDKをダウンロード&インストール汁。
180 名前:デフォルトの名無しさん mailto:sage [2006/07/25(火) 00:37:07 ] >>179 さんありがとうございます。 安全マークの件、深く考えずにそこの1〜8を言われたとおりにやって、 自前のコントロールに9,10をコピペすればとりあえず実装できるのでしょうかね。 明日やってみます。 署名ツールはMicrosoft .NET Framework SDK ってやつに入ってそうです。 www.atmarkit.co.jp/fdotnet/special/dotnet_sdk/dotnetsdk04.html
181 名前:デフォルトの名無しさん [2006/07/25(火) 23:31:50 ] >>164 です。 で、あれからいろいろいじってみたところ、 プロジェクト新規作成からダイアログベースのアプリを作って、 ダイアログ編集画面で右クリックからActiveXコントロールの挿入を選んで Microsoft Rich TextBox Control 6.0 (SP6)っていうのを貼りつけると ダイアログボックスでもワードアートなどのOLEオブジェクトが貼り付けられるっぽいです。 で、貼りつけたあとにこのOLEオブジェクトの情報を取得するにはどうしたらよいでしょうか?
182 名前:デフォルトの名無しさん [2006/07/30(日) 23:41:24 ] 現在VC++6.0で作成したActiveXをVBで使おうとしています。 VB6.0ではVARIANT型でActiveXとの値の受け渡しをしていましたが VB.Netの場合Variant型がないのでObject型を使いました。 ところがActiveXでセットした値が受け取れません。 ActiveXを変更せずにVB.Netで使えるようにしたらVariant型を使わずに どう対処すればよいのでしょうか?? 教えてください。
183 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 04:05:43 ] ByVal/ByRefの違いとかではない? VB .NETのスレで訊く方がいいと思う。
184 名前:デフォルトの名無しさん [2006/07/31(月) 07:03:13 ] >>183 さんありがとうございます。 メソッドじゃなくてプロパティでVARIANTの受け渡ししているんですよ。 VB.Netスレで聞いてきます。 アドバイスありがとうございます。
185 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 09:17:13 ] >>183 は引数の話だからプロパティでも同じ
186 名前:183 [2006/08/01(火) 00:52:41 ] >>184 さん、>>185 さん "プロパティでも同じ"というところがよくわかりません。 ソースを載せるので見てもらっても良いですか?? VB側でActiveXに配列の参照渡しをして、 ActiveXでセットした値をVB側で取得します。 処理は以下のとおりで、 VB.6.0ではうまく値を取得できるのですがVB.Netでは出来ません。 ここでByVal/ByRefを使うと言う事は配列の宣言時に使うと言う事ですか?? BASIC初心者の質問で申し訳ないですが教えてください。 VC6.0で作成したプロパティの処理 int *InfAddr; void CXCtrl::SetInfAddrV(const VARIANT FAR& newValue) { long *ip; SAFEARRAY *psa; psa=newValue.parray; SafeArrayAccessData(psa, (void **)&ip); InfAddr=(int *)ip; SafeArrayUnaccessData(psa); //以降でInfAddrに値をセットする } //.................. VB6.0側の処理 Dim InfTbl As Variant Dim InfDat(140) As Integer InfTbl = InfDat() X1.InfAddrV = InfTbl '配列InfDat()を参照するとActiveXでセットされた値が入っている! VB.Netの処理(VB6.0のプロジェクトを変換) Dim InfTbl As Object Dim InfDat(140) As Integer InfTbl = VB6.CopyArray(InfDat) X1.InfAddrV = InfTbl '配列InfDat()を参照するとVCでセットされた値が入っていない!
187 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 03:51:43 ] Integerって
188 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 04:01:44 ] CopyArrayって字の如く配列をコピーしているのでは? VB .NETはよく知らないけど、InfTbl = InfDatなどとしたらどうだろうか。
189 名前:183 [2006/08/02(水) 00:48:37 ] >>185 さん それもやってみたんですがダメでした。 ActiveXがVariantなのにObjectで渡しているのが原因と思っているのですが、 VB.Net側での回避策ってないのでしょうか? >>187 さん Integerだと何か良くないですか??
190 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 02:39:46 ] Marshal
191 名前:183 [2006/08/03(木) 00:15:46 ] >>190 さん Marshal.GetObjectsForNativeVariantsメソッドを使うってことですか?? 詳しく教えてください。
192 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 00:40:24 ] ちなみにX1.InfAddrV = InfDatだとどなる?
193 名前:183 [2006/08/03(木) 00:58:38 ] >>192 さん 今外に出ているのでうる覚えですが、 エラーになってしまった気がします…。
194 名前:デフォルトの名無しさん [2006/08/04(金) 14:55:25 ] CaptionやTextなんかのプロパティの文字列に日本語を入れたら文字化けするんですが どのように対策をとれば日本語を扱えるのでしょうか? 現状: アルファベットなら期待通りの動きをしています 「aaa」をセットした場合、正しく「aaa」と表示されますが、 「あああ」をセットしようとした場合、「あ¢」のような表示になります カスタムプロパティで文字列(CComBSTR)の要素を追加し、それに対して上の「あああ」を実行すると メンバ変数には期待通り「あああ」が設定されますが、表示が「あ¢」になってしまいます。 動作確認はActiveXコントロールテストコンテナとVBで行いました。
195 名前:デフォルトの名無しさん [2006/08/04(金) 16:08:51 ] >>194 ウニコードは?
196 名前:194 [2006/08/05(土) 12:44:58 ] さんくす。プリプロセッサを_MBCSから_UNICODEに変更したら出来まいた。
197 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 17:55:21 ] どなたか、IEからのリンクのドロップを受け取る方法をしってる方いましたら教えて下さい。 言語はC++、VisualStudio.NET2003でWindowsXP上で開発しています。 IDropTargetを実装してRegisterDragDropしただけでは、文字等を範囲選択してそれを ドロップすれば受け取れますがURLリンクは禁止マークのままで受け取れませんでした。 それでも一応DragEnterとDragOverは来るようなので、DragEnterで受け取ったIDataObjectから URLを得る事は可能なのですが、Dropが来ないのでマウスボタンが離されたタイミングで 受け取る、という動作が出来ません。マウスカーソルも禁止マークのままなので見た目悪いですし。 ちなみに上記方法でGECKOエンジンからのリンクのドロップは普通に受け取れました。 この辺りわかる方いらっしゃいましたら教えて下さい、お願いします。
198 名前:デフォルトの名無しさん [2006/08/21(月) 01:34:15 ] ActiveXがVBまたはVCから呼ばれたか区別って出来ますか? VBとVCで戻り値を変えたいので、ActiveX側で判別したいんですよ。 詳しい方教えてください。お願いします。
199 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 01:36:23 ] >>198 無理だと思う。 それに、VBとVC以外だったらどうするつもりかと。
200 名前:デフォルトの名無しさん [2006/08/21(月) 02:03:15 ] 初期化の時にフラグをセットするくらいしか方法ないんじゃねーの もちろん、初期化でごまかされたら手も足も出ねーけど
201 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 22:12:20 ] つかなんでVB/VCを区別する必要があるんだ? OLEってそんなことしなくていいように作られてるのに。
202 名前:デフォルトの名無しさん [2006/08/30(水) 21:45:07 ] いまVC++からMS Wordにアクセスしてるんだけどさ、 Word::_Document::BuiltinDocumentProperties が IDispatch* を返すんだけど これが何のインタフェースなのか分からない。 Office::DocumentProperties かと思ったらUUIDが違うらしく _com_ptr_t のキャストが通らない。 こんな時どうしたらいい? インタフェースポインタだけじゃインタフェースのUUIDは分からないんだよな? メソッド名でGetIDsOfNamesしたらとりあえずCountとItemプロパティは呼べるみたいなんだが、 あまりにも手探りすぎて不安だ。
203 名前:デフォルトの名無しさん [2006/08/30(水) 21:49:06 ] ワードのヘルプあるでしょ
204 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 21:50:32 ] >>203 ワードのヘルプにはUUIDのことなんか書いてないぞ
205 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 22:06:11 ] 202です。 つーか質問の仕方が悪かった。OLBファイルに指定されてたヘルプは呼んだけど、 (そこに書かれてた様に) DocumentProperties だと想定したら UUIDが合わないから困ってるんだわ。 _com_ptr_t は内部でQueryInterfaceしてキャストしてて、、 未知のインタフェースを目的のインタフェースに変換できないと VC の #import で自動生成されたInvoke補助コードが使えなくなってしまう。
206 名前:デフォルトの名無しさん [2006/09/01(金) 00:34:20 ] 基本的な質問でスイマセン。 AxtiveXでプロパティの初期化ってコンストラクタで実施すればよいのでしょうか? あとプロパティページの値を動作時に反映させる場合、 DoPropExchange()に処理を追加すればよいのでしょうか? この場合コンストラクタで初期化を実施した値よりもプロパティページの設定が 優先されるのでしょうか? 教えてください。
207 名前:デフォルトの名無しさん [2006/10/02(月) 20:57:27 ] m
208 名前:デフォルトの名無しさん [2006/11/28(火) 17:52:03 ] BGMのあるページが表示されるとすぐ 『このwebページでActivexを実行するにはクリックしてください』 とボタンがでて、OKしても×をクリックしてもエラーでマイクロソフトに報告になってしまいます。 何が原因なのでしょうか? またこの解決法があれば教えてください。
209 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 17:59:49 ] おまえ馬鹿だろ?
210 名前:デフォルトの名無しさん [2006/11/28(火) 21:33:18 ] すみませんがここの"Beep"と言うのはどこからでているのですか? どこかに一覧とかあるのでしょうか? ぐぐってもなかなかでてきませんorz msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnguion/htm/drgui021099.asp やりたいことはCHtmlView(IEでHTMLをブラウズするクラス) で作ったウィンドーにフォーカスを当てたいだけなのですが。 OLE使うのは初めてで分からないことだらけです。多分 DISPATCH *pDisp=GetHtmlDocument( ); でpDispを求めてSetFocusみたいなことをやれば良いと思うのですが。 (SetFocus()でCHtmlViewにフォーカスを当てるだけだと駄目でした) SPYしてクリックしてみるとCViewの子供のIHTMLDocument2にフォーカスが 当たっているようでした。 DISPID dispid; OLECHAR * szMember = "Beep"; //<-------ここ // No parameters, so no array DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0}; // pdisp is an IDispatch pointer // to the Beeper object hresult = pdisp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid); hresult = pdisp->Invoke( dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &dispparamsNoArgs, NULL, NULL, NULL); よろしくお願いします。
211 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 21:49:37 ] >>210 ちゃんと読めばわかる話じゃ? その文章中からさらにリンクが張られてるでしょ。 "Beep"なんてのはそこで使われている例の話であって ググってわかる話ではないよ。
212 名前:デフォルトの名無しさん [2006/11/28(火) 22:05:47 ] どうも。すみません。 BEEPは出来合のコマンドだと勘違いしていました。 >>211 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnguion/htm/msdn_093098.asp ですね。 最終的にCHtmlViewにフォーカスを当てるためにはBeepの代わりに 何を書けばいいのですか? そのコマンドはどこを探せばいいですか?
213 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 22:25:08 ] >>212 単にビューにフォーカス当てたいんなら、そのビュークラスの.SetFocus()でいけるんじゃないの?
214 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 22:26:18 ] あ、ごめん>>210 よく読んでなかった。 だめだったのか。
215 名前:デフォルトの名無しさん mailto:sage [2006/11/28(火) 22:36:00 ] ていうか、>>213 の方法でできたぞ。
216 名前:211 mailto:sage [2006/11/28(火) 22:47:34 ] >>212 うちでもCHtmlViewのポインタ取得してSetFocus()すればできたよ。 ::GetFocus()した結果とCHtmlViewのHWND比較してみ。 もしかしてTABキーを押したときにViewのHTMLDocument内で フォーカス移動するのがいやだとか? ならPreTranslateMessage()でTABキーの押し下げを捕まえるしかないと思うよ。
217 名前:デフォルトの名無しさん [2006/11/28(火) 23:40:39 ] >>216 ども (会社で)SPYしたのを見るとCHtmlViewをSetFocus()したのと マウスでクリックした時のHWNDは違っていた マウスでクリックしたのはCHtmlViewの小の小の小の小あたりだった
218 名前:デフォルトの名無しさん [2006/11/28(火) 23:42:14 ] >>216 PS. 単純にホイールでスクロールしたいだけです
219 名前:211 mailto:sage [2006/11/29(水) 01:15:41 ] >>217-218 ごめん。 今確認したら確かにHWNDはCHtmlViewではなくて「Internet Explorer_Server」だった。 でも、マウスでクリックしたときとSetFocus()したときで同じ値になってる。 あと、どちらの場合もホイールでスクロールできる。 フォーカスがあってもマウスカーソルがウィンドウから外れているときは スクロールできないが、WM_MOUSEWHEELはちゃんと来てるのでIEの仕様っぽい。 普段使ってるマウスユーティリティは全てOFFにして確認したので こちらの環境依存ではないと思うが・・・
220 名前:211 mailto:sage [2006/11/29(水) 01:38:13 ] ちょっと補足だけど 「Internet Explorer_Server」のHWNDはFindWindowEx()で取れるね。 時間がないのであまり検証できないけど、 なんかの役に立つかもしれないので一応。
221 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 08:19:10 BE:338840047-2BP(330)] >>220 ありがとうございます。 OLEでやろうとしたのは拡張したくなった時に OLEのことをちょっと知っておきたかったのも あります。 とりあえず今回はFindWindowEx()で乗り切ることを検討します
222 名前:デフォルトの名無しさん [2006/12/04(月) 23:27:55 ] この記事でコントロールは作れたけど、それをWordに張るにはどうすればいいか、分かりません。 Exposing Windows Forms Controls as ActiveX controls ttp://www.codeproject.com/cs/miscctrl/exposingdotnetcontrols.asp 誰か分かる方はいらっしゃいませんか?
223 名前:デフォルトの名無しさん [2006/12/06(水) 23:48:54 ] Wordに張るにはOLEサーバにする必要があるのですか? そうするとEXEを作る必要があるのかと思いますが、 C#の場合、OLEサーバを作るには何をすればよいのでしょうか? 必要なインターフェース等ご存知の方、よろしくご教授お願いします。
224 名前:デフォルトの名無しさん mailto:sage [2006/12/07(木) 00:00:01 ] 別にDLLでもサーバになれる。 C#とその他.NET全てのプログラムは、regasmを使ってCOMコンポーネントとして公開できる。 OLEサーバになりたければそのために必要なインタフェースを全部実装したクラスを作ればいいのだろうが、 そこまでは知らん。
225 名前:デフォルトの名無しさん [2006/12/11(月) 22:56:16 ] ATL-COMだとメソッドの引数にユーザ定義型のポインタを渡せるけど、 オートメーションだと出来ないもの? (環境:VS2005 VC++、プロジェクトをMFCアプリケーションで作成した場合) VARIANTのポインタとかで渡さないとダメなのかな? だったらかなり面倒だなぁ…。
226 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 00:13:56 ] openoffice.orgでOLEが使えないのが痛い
227 名前:デフォルトの名無しさん mailto:sage [2006/12/18(月) 23:43:31 ] htmlファイルからローカル・フォルダーを選択するための ActiveX+JScriptを使用しています。 var shell = SC.eval("new ActiveXObject(¥"Shell.Application¥")"); Folder = shell.BrowseForFolder(0,"Select Folder",0); 途中省略 <object id=SC classid=clsid:0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC> <param name=Language value="JScript"> </OBJECT> 上のスクリプトは,ネットで調べた解説をコピーして作りましたが,この ActiveX+JScriptが「安全である」かどうかを判断するには,どうすれば 良いのでしょうか?
228 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 13:43:51 ] >>227 そのGUIDってMSScriptControl.ScriptControlだろ?安全なわけないじゃん
229 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 00:36:52 ] なぜでしょうか?
230 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 00:41:26 ] >>227 セキュリティレベルは継承されるからそんなことしても無駄でしょ。 普通に var shell = new ActiveXObject("Shell.Application"); としとけばいい。
231 名前:227 mailto:sage [2006/12/20(水) 11:09:12 ] >>230 BrowseForFolder.HTM V1.01 (C) yoshioka.teruo@xxx.xxxx 2005-08-17 が公開しているスクリプトを利用しました。この解説だと: >Shell.ApplicationのBrowseForFolderを.HTMファイルで使おうとしても、 >何故か使えません。HTAにすれば使えるようになりますが、HTAにすると、 >逆に、使えなくなる機能もあり、どっちもどっちです。 私の質問の仕方が悪かったですが,227のようなhtmlファイルをユーザーに IEのセキュリティー設定の変更をさせるずに,使用してもらうことは無理 ですか? htaファイルに拡張子を変更すると,ユーザーは,IEのセキュ リティー設定の変更をしなくても良いのでしょうか? ActiveXを使用したhtmlかhtaで,ユーザーが使いやすい配布方法を探しております。
232 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:31:36 ] >>231 の質問を言い換えると 「IEのセキュリティホールをご存じありませんか?」
233 名前:227 mailto:sage [2006/12/20(水) 15:50:37 ] >>231 >htaファイルに拡張子を変更すると,ユーザーは,IEのセキュ >リティー設定の変更をしなくても良いのでしょうか? htaに作り替えて,IE ver. 7のセキュリティ設定を元に戻して,確認してみました。 (1) 拡張子をhtaに変更してActiveXを使用したページを私のサイトで公開すると, ユーザーが私のサイトを「信頼済みサイト」に加えれば,その中で使用されている ActiveXが自由に使えるようです。 (2) 拡張子がhtmlだと,ユーザーが私のサイトを「信頼済みサイト」に加えて, さらに,「信頼できるサイト」のセキュリティのレベルを<低>にして, さらに,Internetのセキュリティ・レベルのカスタマズを開いて,「 スクリプトを実行しても安全だとマークされていないActiveXコントロール の初期化と実行」を<有効>または<ダイアログを表示する>にする 必要がありました。 >「IEのセキュリティホールをご存じありませんか?」 htaもIE上で動くので,IEにセキュリティホールがあれば,htaのActiveXも 危険なはずなのに,ユーザーの設定が(1)で済むのが不思議です。
234 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 16:44:09 ] 実行時にセキュリティダイアログの出るHTML Applicationには特権が与えられる。
235 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 16:44:54 ] HTAを実行するのはIEじゃないしな
236 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 19:05:18 ] >>227 > (1) 拡張子をhtaに変更してActiveXを使用したページを私のサイトで公開すると 間違ってもHTAをそのままweb上で公開なんてしないでね。 > ActiveX+JScriptを使用しています ム板にWSHのスレがあったりする。
237 名前:227 mailto:sage [2006/12/20(水) 19:27:22 ] >>236 >>>227 >> (1) 拡張子をhtaに変更してActiveXを使用したページを私のサイトで公開すると >間違ってもHTAをそのままweb上で公開なんてしないでね。 今現在,HTAを私のwebで公開しているのですが,大きな問題が 起こる可能性があるのでしょうか? (話しのながれで,この板で 最後の質問させていただきました。)
238 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 19:33:31 ] HTAは間違って実行すると何が起こるかわからん
239 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:37:49 ] exeだとかrootでのshスクリプトと何が違うんだ
240 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 09:17:58 ] ログに残らない
241 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:33:28 ] VC++でActiveXコンポーネットを作って、IE上で動かすところまでは出来ました。 そこから呼び出し元のHTMLをJavascriptで操作することはできますでしょうか?
242 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 01:45:43 ] 俺はできると思う。 まずは色々自分で試してみようよ。
243 名前:デフォルトの名無しさん [2007/02/07(水) 21:35:23 ] >>241 やりたいことがよくわからんけど、OCXからjavascriptの特定メソッドをコールしたいってこと?
244 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 13:17:49 ] IEを操作時にJavaScriptで「はい」「いいえ」のボックスが出現するのですが、 それを扱うことは可能でしょうか? InternetExplorer.Application辺りを調べてみましたがないみたいです。 もしご存知の方がおられましたら宜しくお願いします。
245 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 15:24:06 ] ダイアログボックス程度なら、 普通に子ウィンドウ検索してボタンに適当にウィンドウメッセージ投げてやればいいじゃん。
246 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 19:21:21 ] JavaScript 書き換えりゃいいんじゃね?
247 名前:244 mailto:sage [2007/02/08(木) 20:52:46 ] >>245 その子ウインドウの検索をするメソッド名(?)を教えていただけないでしょうか? もしくはその辺りの情報がひっかかる検索語句をお願いします。
248 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:10:33 ] VisualStudioのSpy++でウィンドウ階層見れるから手動で少し調査してから GetForegroundWindowかGetActiveWindowでIEかダイアログボックスのウィンドウハンドル拾って FindWindowでボタンコントロールのウィンドウ探してPostMessage。
249 名前:244 mailto:sage [2007/02/10(土) 19:30:03 ] >>248 おお!丁寧にありがとうございます! 土日ですし、解決するまでがんばってみます!^^
250 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 10:37:08 ] OLEでメディアプレイヤーを操作したいのですがうまくいきません。 [MediaPlayer.MediaPlayer]のインスタンスは間違いなく作成できているのですが それに対してのメソッドがことごとく無反応です。 なにか特殊な前置きが必要なのかな。。
251 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 22:06:07 ] >>250 CoInitialize()とか?
252 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 12:16:35 ] すみません質問させてください。 VC6のATLでActiveXコントロールを作成しCAB作ってサーバに上げたのですが、 URL直打ちでCABファイルがダウンロードできて、中身が見れたり別サーバに アップロードすればそのまま使えてしまいます。 特定のサーバからじゃないとインストールできなくしたりできるのでしょうか? 何かご存知の方がいましたら教えてください。
253 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 17:41:13 ] そういうものだ
254 名前:デフォルトの名無しさん [2007/02/14(水) 19:10:08 ] 使えてしまうって方は、 IOleClientSiteからIServiceProviderだか何だかを経由して IBindContext か何かを 取得すれば URL が解るから、それで動作変えれば。
255 名前:252 mailto:sage [2007/02/15(木) 02:15:36 ] >>254 ご回答ありがとうございます。 なるほどー。URL取得して違う鯖だと警告出して終了、 などでOKそうですね。試してみます。 CABファイルのダウンロード禁止はやっぱり無理でしょうか。 鯖側で.htaccessでCABファイルの直リン禁止にしたら インストールもされなくなってしまいましたし・・・。 設定間違えてるのかもしれませんがこれはスレ違いぽいですね。 あとは時間があればライセンス付ActiveXコントロールでも 試してみます。
256 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 16:36:34 ] ACLかけろよ
257 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 16:41:44 ] >>255 asp でも cgi でもいいから、ダウンロード専用のページを作成して、 その中でリファラをチェックすればいいよ。 リファラを見て問題がなければ、ローカルからCABを読み込んで ストリームに流し込んでやればいい。
258 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 17:29:52 ] 捏造できる罠 そもそも配布方法に問題があるんじゃ?
259 名前:252 mailto:sage [2007/02/17(土) 07:44:13 ] >>256->>257 いろいろやりかたあるみたいですね。 土日で調べて試してみようと思います。 >>258 CABファイルを鯖にアップロードしただけなのですが、 普通に置いただけじゃ駄目ということでしょうか?
260 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 13:07:58 ] 見られてまずいものはそれなりの認証が必要にするべきでは?
261 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:48:32 ] OLEでインプットダイアログを表示させることはできないでしょうか? 単なるポップアップは WSctipt.Shell の Popup を発見したのですが。 これがあれば簡単に対話式のプログラムを組めるのですが、、、、
262 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:55:00 ] いやオートメーションの中で何を呼ぼうと自由では
263 名前:デフォルトの名無しさん mailto:age [2007/02/28(水) 21:23:41 ] ProgIDからタイプライブラリを取得したいんだけど、API無いの? 自分でレジストリ検索しなくちゃだめ? 公式な検索ルールってあるの?
264 名前:デフォルトの名無しさん mailto:age [2007/03/21(水) 20:11:55 ] ほしゅ
265 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:44:37 ] 初歩的な疑問があるんですが、お教え願えないでしょうか。 環境はVS.NET 2003です。 MSDNチュートリアルを見ながら、ATL のActiveX コントロールを作ってみたんですが、dll の容量が324Kbでした。 同様の物を MFC で作った ocx の容量は144Kbでした。 てっきり ATL の方が小さくなると思ってたんですが... ひょっとして、MFC の方は別途必要な物があるんでしょうか?VBRUNJPなんとかみたいに。 どうかよろしくお願いします。
266 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 20:35:39 ] 動的リンク
267 名前:デフォルトの名無しさん [2007/04/08(日) 18:08:03 ] どなたかActiveXのダウンロードサイトを貼ってくれまいか?
268 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:09:33 ] どの?
269 名前:デフォルトの名無しさん [2007/04/08(日) 18:35:09 ] >>268 そんなに色々あるんですか? 実はハンゲームに登録したもののActiveXが無いのでゲームが出来ないんですよ
270 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:54:37 ] ゲームを始めようとすると、そのゲーム自身のAcitveXコンポーネントがダウンロードされるはず。 そのAcitveXコンポーネントの実行環境はWindowsとInternet Explorerが備えている。 それ以外の環境で実行したいという話なら知らない。
271 名前:デフォルトの名無しさん [2007/04/08(日) 19:10:00 ] >>270 ダウンロードのやり方の説明が出るだけで、何処にも出ないんですよ
272 名前:デフォルトの名無しさん [2007/04/08(日) 19:11:20 ] これです www.hangame.co.jp/winsp2/activex_win.asp?objectid=HGPluginJP23&classid=D0FD5E32-CABD-4A6E-BD0F-94ACE89CCE03&codebase=down.hangame.co.jp/jp/dist/hgstart/HGPluginJP23.cab#version=23,0,0,0
273 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 19:13:57 ] *.hangame.co.jpを信頼済みサイトに登録してみろ httpsがどうたらというチェックは外しておけ それでだめなら、そもそも板違いだからよそで聞け
274 名前:デフォルトの名無しさん [2007/04/08(日) 19:23:20 ] >>273 出来ました ただ今度はダイレクトXをどれをインストールしたら良いかわからなくて とりあえずダイレクトX9をインストールしようとしたら環境が悪く9%の 時点で34分掛かると出てしまいました。 後は自分で何とかします。ありがとうございました
275 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:13:18 ] VC2005にて、Webページに貼り付けるActiveXを作っています。 1プロセスで1つしか実行できない描画用ライブラリを 使ってるせいなのか、 ブラウザで同じページを2つ立ち上げると 片方の処理が停まります。 同じプロセス内だからでしょうか? 別プロセスで動くようにするにはどうすればいいんでしょうか? (VBの場合はActive.EXEにすればいいとわかりましたがVC の場合がわかりません)
276 名前:275 [2007/04/19(木) 16:48:33 ] IEのショートカットで複数起動すると、それぞれ別プロセスになるので問題ないようです。 しかし、Ctrl+Nだと、全部1つのプロセスになるので、どうしても他のページに影響してしまうようです。
277 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 17:16:30 ] スレ立てれ
278 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 17:30:58 ] やめれ
279 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 17:38:26 ] 恕を製作せずにタスクトレイにアイコンを追加して メッセージをそこで受け取ることは出来ますか?
280 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 18:07:07 ] そんな珍妙なものを製作していただく必要はありません。
281 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 18:16:02 ] >>279 不可視の恕は必要だと思うよ。
282 名前:275 [2007/04/19(木) 20:09:26 ] ここの5にあるとおり、Visioでさえも駄目となると、どうしようもないんでしょうか? Visio : Visio ActiveX あれこれ blogs.msdn.com/visioj/archive/2005/08/06/448501.aspx
283 名前:デフォルトの名無しさん [2007/04/19(木) 20:45:59 ] > 1プロセスで1つしか実行できない描画用ライブラリ の使用をやめりゃいいんじゃね?
284 名前:275 [2007/04/19(木) 21:13:25 ] ATLでアウトプロセスにすればいけるかと思ったんですが、 子プロセス作ってウインドウハンドル渡してそこから描画しようと思います。 プロセス間通信が面倒ですが。 >283 代用できるもの無いんです。 非公開な特殊画像のデコーダなので。
285 名前:275 [2007/04/19(木) 21:15:04 ] >ATLでアウトプロセスにすればいけるかと思ったんですが、 これの続き書き忘れました。 ATLのアウトプロセス(EXE)でも結局同じでした。 IEから独立したプロセスとして動いてくれますが、 IEを複数開いても、結局1つしかプロセスが立ち上がりませんでした。
286 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 21:28:00 ] インプロセスCOMが子プロセスを生成して、 パイプなぞで通信するというはどうか。
287 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 21:58:02 ] その変なサーバをマルチスレッドでエゴ仮想
288 名前:275 [2007/04/19(木) 22:11:12 ] いろいろやってみましたがやはり子プロセスで行くしか無さそうです。 悔しいです! >>286 それで行きたいと思います。
289 名前:デフォルトの名無しさん [2007/04/24(火) 12:22:39 ] SDKで開発したアプリにOLEサーバ機能を追加しようと四苦八苦しております。 COMインターフェース部分はMFCを使ったほうが簡単かなと思い、 インターフェース部分はMFCのDLLという構成にしていますが クライアントからでCreateDispatchしたときにエラーとなります。 エラーは0x80070002です。 ここで疑問なのですが、そもそもこのような構成(COMi/fがDLL)で OLEサーバを作れるものでしょうか?
290 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:35:24 ] できるっていうか、普通そうじゃないのか。 単なるDLLとして作ってるとか言う落ちじゃなければ。
291 名前:289 [2007/04/26(木) 19:00:20 ] >>290 すいません。説明不足のようでしたね。 SDKで開発したアプリというのはexeでして このexeにCOMインターフェースを付けて 外部のアプリにサービスを提供しようとしています。 その方法としてCOMインターフェース部分を単なるDLLとしてexeとリンクし 外部のアプリとはCOMでの連携を考えています。
292 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:10:58 ] DLLでアウトプロセスCOMサーバが作れるかってはなしなら まず作れない 別々のプロセスに属するDLL同士が独自のIPC/RPCを 実装しているなら目的のことは出来るだろうけど。
293 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 21:06:16 ] >>291 まず、インプロセスサーバかアウトプロセスサーバのどちらなのかが話から見えない。
294 名前:デフォルトの名無しさん [2007/04/26(木) 23:30:24 ] >>293 >まず、インプロセスサーバかアウトプロセスサーバのどちらなのかが話から見えない。 そんな用語があることさえ知りませんでしたがアウトプロセスサーバです。
295 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 23:39:22 ] やれないことはないだろうが、少なくともMFCのウィザードは使えないと思う。 DLLならインプロセスを前提にするだろうし、 アウトプロセスならEXE内に実装することを前提にするだろうし。
296 名前:デフォルトの名無しさん [2007/04/27(金) 09:06:17 ] ありがとうございました。 いろいろクグりながら試行錯誤した結果、ATLで雛形を作って それに既存SDKのソースを組み入れるとできそうな予感がしてきました。 ATLは初挑戦なのですが、希望が見えてきました。
297 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 03:52:16 ] C++で ActiveXのコントロールを作成していますが、 コントロール側から 埋め込んでいるHTML内のJavascriptの 関数を呼び出すにはどうしたらいいのでしょうか? ↓以下のようなHTMLで mycontrolオブジェクト内から 関数f()を呼び出したいのです --------------- <object id="mycontrol".../> <script> <!-- function f() {} --> </script> --------------- 以下のページの FireEventを使ったサンプルがヒントになるかと思いいろいろ試してみました。 www.microsoft.com/japan/msdn/columns/webteam/webteam02052001.aspx たしかにonclickなどのイベントを経由して間接的にf()を呼び出すことはできましたが、 直接f()を呼び出す方法がわかりません。 ご存知の方がおられましたら、ご教示お願いいたします。
298 名前:297 [2007/05/18(金) 05:15:15 ] 自己レスです。 >>297 の方法よりもうちょっとすっきりいくようになりました。 ActiveXコントロール側にイベントを追加して それをJavaScript側でハンドルして f()を呼ぶようにすれば 間接的ですが、だいぶすっきりしました。 --------------- <object id="mycontrol".../> <script> <!-- function f() {} function mycontrol::myevent() { f(); } --> </script> --------------- 最悪これで逃げようと思いますが、直接f()を呼ぶ方法はないものでしょうか?
299 名前:275 [2007/05/18(金) 11:14:10 ] <script for="OBJECTID" event="MyEvent(fire)" language=javascript> <!-- alert("event=" + fire); --> </script>
300 名前:デフォルトの名無しさん [2007/05/18(金) 11:15:29 ] やっべ名前が残ってた。
301 名前:297 [2007/05/18(金) 14:39:33 ] >>297 なるほど、そんな書き方もあるんですね。 今回はHTML側はあまりいじりたくない状況でして、 そしてHTMLでは <script> <!-- function f() {} --> </script> とだけ書いてあるような状況なので、イベントを経由せずに 実現したかったのですが、 結局以下のページの方法で所望の動作をさせることができました。 homepage3.nifty.com/LILILIN/HOWTO/activex_javascript.htm scriptタグを探して、そいつのtextプロパティに evalさせたい script文字列を 書き込めばいいんですね・・・
302 名前:デフォルトの名無しさん [2007/05/19(土) 15:55:23 ] C++でActiveXコントロールを作成し、HTMLのembedタグなどを使って 動作させることは出来たのですが、>>121 のように 直接対象ファイルをIEにドロップしてもコントロールが動作するように させるにはどうしたらいいのでしょうか? ActiveXドキュメントにしたところ、そのような動作ができましたが、 拡張子がexeになりますし、今度はActiveXコントロールとしてコンテナに 貼り付けることができなくなってしまいました。 拡張子がocxのまま >>121 のような挙動をさせるには どうしたらよいのでしょうか?
303 名前:302 [2007/05/19(土) 16:04:45 ] 補足です。 HKEY_CLASSES_ROOT\.ext (extはコントロールと結び付けたい拡張子)に 自分のActiveXコントロール識別子 (Hoge.Ctrlなど)を指定し、 HKEY_CLASSES_ROOT\Hoge.Ctrl\CLSID に ActiveXコントロールのGUIDを記述したところ、 IEに.extファイルをドロップすると、コントロールが呼び出されて起動するところまでは デバッガで確かめることができました。 しかし、COleControlの派生クラスがコンストラクトされたあとに すぐにデストラクトされてしまい、結局動作するに至っていません。 結局IEでは、ファイルを開くことができませんでした、とエラーになってしまいます。 >>131 の方が言われるように追加でいくつかのインタフェースを実装する必要があるということでしょうか?
304 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:09:54 ] 質問です。 ActiveXを初めて使ってみようとしている所です。 とりあえずWin32コンソールアプリで適当なActiveXコントロールを呼び出して 適当なプロパティをセットして動くかどうか試すだけ、という事をやろうとしています。 以下のようなコードを書いたのですが、GetIDsOfNames()までは正しい値を 取得できているようなのですが、Invoke()の所でエラー値が返ってきてしまいます。 (エラー値は0x8000ffffで致命的なエラーです。) COM関連のサイトや本を調べて手順は踏んでいるつもりなのですが、 何か基本的な所でミスがあるのでしょうか? よろしくお願いします。
305 名前:304 [2007/05/22(火) 00:13:30 ] #include <atlbase.h> #import "TEST.ocx" rename_namespace("TEST") named_guids const GUID IID__TEST = {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; int main( int argc, char** argv ){ ::CoInitialize(NULL); HRESULT hRes; TEST::_DDTest p = NULL; hRes = CoCreateInstance(TEST::CLSID_TEST,NULL,CLSCTX_SERVER,IID__TEST,(void**)&p); VARIANT vPar; ::VariantInit(&vPar); vPar.vt = VT_I4; vPar.lVal = 0; DISPID lDispId = 0; wchar_t* pwcName = L"Prop"; hRes = p->GetIDsOfNames(IID_NULL,&pwcName,1,GetUserDefaultLCID(),&lDispId); DISPPARAMS stPar; memset(&stPar,0,sizeof(DISPPARAMS)); stPar.cArgs = 1; stPar.rgvarg = &vPar; stPar.cNamedArgs = 1; DISPID rgdispid[] = {DISPID_PROPERTYPUT}; stPar.rgdispidNamedArgs = rgdispid; hRes = p->Invoke(lDispId,IID_NULL,dwLcId,DISPATCH_PROPERTYPUT,&stPar,NULL,NULL,NULL); p->Release(); ::CoUninitialize(); return (0); }
306 名前:デフォルトの名無しさん [2007/05/27(日) 18:43:28 ] VB6 IDE 及び Office VBE IDE を扱いのですが、リンクエラーで躓いています。 VisualStudio2005+SP1 で Win32プロジェクトを作り、stdafx.h に以下の行を追加しました。 #import "MSO.DLL" raw_interfaces_only rename("RGB","MSRGB") rename("DocumentProperties","MSDocumentProperties") #import "VB6EXT.OLB" raw_interfaces_only, raw_native_types, rename_namespace("VBIDE"), named_guids, auto_search #import "VBE6EXT.OLB" raw_interfaces_only, raw_native_types, rename_namespace("VBAIDE"), named_guids, auto_search DLLやOLBファイルは実際はフルパスで記述しています。 他はプロジェクト初期状態から変更していない状態でビルドすると以下のエラーになってしまいます。 fatal error LNK1179: ファイルが無効か、または壊れています: COMDAT '_IID_Application' を複製します。 回避策がありましたら、よろしくお願いします。
307 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:42:40 ] >>304 IsInvokeAllowed
308 名前:デフォルトの名無しさん [2007/06/01(金) 16:53:09 ] IEがコンテナな、描画処理が重いActiveXを作ってます。 スクロールするとWM_PAINTが沢山やってくるので、スクロール中は描画しないように したいのですが、IEのメッセージをフックしてもWM_VSCROLLが来ません。spyにも出てきません。 一体どうやってスクロール中の描画処理を回避すればいいのでしょうか?
309 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:01:52 ] Aeroにする
310 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 18:13:06 ] 予めメモリDCやメタファイルに描画しておいて、 WM_PAINTではそいつを表示するようにするだけにするというのはだめか?
311 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 21:06:40 ] WM_PAINTはメッセージの優先度は低いんだから描画してやれよ。 まあ、ValidateRectしといて、SetTimerでWM_PAINTを 遅延させる手もあるだろうけどサ
312 名前:308 [2007/06/01(金) 21:08:22 ] ちょっと仕組みが複雑でして、 ハンドルを渡して子プロセスに描画させてるのですが、 それへの命令はパイプの通信で行ってるんです。 数ミリ秒単位でWM_PAINTをプロセス間通信で投げると どんなにバッファを用意していても、通信処理が追いつかず いつかバッファからあふれて、他の命令が飛んでしまいます。 WM_VSCROLLは取れないんだとしたら、 WM_PAINTは0,1ミリ秒に一度だけ、とかの処理に逃げるしか 無いんでしょうか。
313 名前:デフォルトの名無しさん [2007/06/08(金) 22:58:48 ] 質問です。 たとえばあるActiveXコントロールで、ある処理の実行を要求するRun()メソッドと、 その処理が完了した事をコンテナに通知するRunComplete()イベントがあるとします。 やりたい事は、コンテナでRun()を呼び出した後、 RunCompleteイベントが通知されるまで無限ループで待機し、 イベントをキャッチして処理が終了した事がわかったら脱出する。 それをforループで数回繰り返す、というものです。 コードにすると以下のような感じになると思うのですが、 「イベントをキャッチしたら」に当たる部分の実装方法がわかりません。 for( i=0; i<10; i++ ){ m_TestCtrl.Run(); // 処理実行要求 while(1){ if( イベントをキャッチしたら ){ break; } } } 最初イベントハンドラ(OnRunCompleteTestctrl())を使って上記手順を 実現しようと考えたのですが、「forループで数回繰り返す」という所で ひっかかってしまっています。 よろしくお願いします。
314 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:18:46 ] 概念的にはイベントは、そんな風に使う存在ではない 形としては向こうからコールバックされるもの
315 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:26:27 ] >>313 for( i=0; i<10; i++ ){ ミューテックスhogeを作成する。 m_TestCtrl.Run(); // 処理実行要求 ミューテックスhogeがシグナルになるまで待つ } OnRunComplete() { //一連の処理 ミューテックスhogeをシグナルにする。 } 関連API CreateMutex OpenMutex ReleaseMutex CloseHandle WaitForSingleObject
316 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:37:13 ] 315だか よく考えたら これイベント発生させる必要ないんじゃない? m_TestCtrl.Run()の後にRunCompleteイベントが発生したときに 実行されるつもりのコールバック関数を直接呼べばいいと思うが。
317 名前:デフォルトの名無しさん [2007/06/09(土) 11:30:22 ] VC6で作成したインスタンス化されないActiveXコントロールの入ったダイアログを VC++2005のリソースエディタにインスタンス化されない状態で表示させたいのですが。 VC6のように表示してくれません。VC++2005のプロパティで何らかの設定が必要なのでしょうか? よろしくご指導下さい。なお、VC++2005でのプログラム開発ははじめての素人ですどうぞ宜しくお願い致します。
318 名前:デフォルトの名無しさん [2007/06/09(土) 11:36:16 ] VC6で作成したインスタンス化されないActiveXコントロールの入ったダイアログを VC++2005のリソースエディタにインスタンス化されない状態で表示させたいのですが。 VC6のように表示してくれません。VC++2005のプロパティで何らかの設定が必要なのでしょうか? よろしくご指導下さい。なお、VC++2005でのプログラム開発ははじめての素人ですどうぞ宜しくお願い致します。
319 名前:デフォルトの名無しさん [2007/06/12(火) 03:54:12 ] デュアルインターフェースで大量のデータを高速にやり取りする方法ってないのかな 構造体の配列は渡せないし、ファイルを経由して渡すようなやり方しかないんだろうか
320 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 06:34:35 ] 俺、やっぱ疲れてんのかなぁ? >>317 と >>318 が同じ文章に見える。
321 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 09:31:50 ] >>319 >構造体の配列は渡せないし 渡せるがVB6やVBScriptから使えなくなってしまう。 SafeArrayを使えば何とかなるが今度はC++や.NETからの利用が面倒になる。
322 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 10:16:39 ] >>321 SafeArrayだと型の制限がキツいし構造体も使えなかったんじゃなかったっけ
323 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 10:59:23 ] VARIANTの配列にしてしまえばやりたい放題だったと思うが、 お友達にはなりたくはないな。
324 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 13:59:23 ] IRecordInfoとかを使えばVARIANTに構造体(へのポインタ)を持たせられるみたいだがよくわからない
325 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 22:01:03 ] 全部シリアライズ化してLPCTSTRで渡す。
326 名前:デフォルトの名無しさん mailto:sage [2007/06/13(水) 00:35:49 ] その発想なかったわ
327 名前:デフォルトの名無しさん [2007/06/27(水) 11:32:33 ] 初歩的な疑問があるのですが、お教え願い致します。 環境はVC++2005です。 ALTやMFCを使わないで、IEに貼り付けられるActiveXは、作れないものでしょうか? ATLやMFCなどのDLLに依存させたくないのです。 可能でしょうか? 参考になるURLなど教えて頂けたら幸いです。 宜しく御願い致します。
328 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 12:35:25 ] >>327 >ATLやMFCなどのDLLに依存させたくないのです。 どっちも静的にリンクできるがそれじゃいかんの? オートメーションなら自前で何とかなるが、 実装の必要なInterfaceの多いOCXコンポーネントとなると現実的じゃねーぞ。
329 名前:327 [2007/06/27(水) 14:09:23 ] ご回答ありがとうございます。 静的リンクで、とりあえず開発してみようと思います。 また、自前での実装も大変と思いますが、トライしてみます。 ありがとうございました。
330 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 11:01:30 ] Windows SDKのドキュメントを見ていて気付いたのだが、 ActiveX ControlsがVS .NET 2003付属のMSDNライブラリでは、 Component Developmentの下だったのに、 今のオンライン版ではWeb Development→Internet Explorer Development →Content Extensionsの下へ移っている。 最初無くなったかと思ったよ。
331 名前:デフォルトの名無しさん [2007/07/19(木) 00:11:12 ] IEコンポーネントについて質問です。 navigate2()で、最後の引数のheadersにリクエストヘッダーとして クッキーを送信したいんですがうまく行きません。 IEコンポーネントを使って、任意のクッキーを送信するには どのようにしたらいいでしょうか。 環境はWinXP, IE7で、JScript WSHでテストしてみました。 -- ie.js -- var ie = new ActiveXObject("InternetExplorer.Application"); ie.Visible = true; ie.navigate2("localhost/cgi-bin/env.cgi", 0, null, "", "Cookie: aaa=bbb; ccc=ddd\r\nAccept: */*\r\nXXXXX: AAAAAAAAAA\r\n"); ---- 他のヘッダーはしっかり送られてるようです。 よろしくお願いします。
332 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 07:18:10 ] 試してないけど IHTMLDocument2::cookie で設定してみたらどうだろうか。
333 名前:デフォルトの名無しさん mailto:sage [2007/07/20(金) 11:31:14 ] >>331 やっぱり試してなけど、332の言うとおり ie.document.cookie = "key=value"; でいけると思う。 ただ、cookieはURLに関連付けられるので、あらかじめターゲットのURLと 同じドメインのページを表示した状態での設定が必要。 -- ie.js -- var ie = new ActiveXObject("InternetExplorer.Application"); ie.Visible = true; ie.navigate2("localhost/" ); //適当なページ (おそらく直前のnavigate完了の待ち合わせが必要) ie.document.cookie = "aaa=bbb; ccc=ddd; path=/"; //pathの指定はお好みで ie.navigate2("localhost/cgi-bin/env.cgi", 0, null, "", "Accept: */*\r\nXXXXX: AAAAAAAAAA\r\n"); ---- cookie 設定のオプションとして domain を指定できれば、このようなめんどくさい ことしなくてよいのだが、セキュリティの関係で domain を明示的に指定しても うまくいかないらしいので。 あと、このような質問はスクリプト関連のスレの方が適切な回答が得られると思う。
334 名前:331 [2007/07/21(土) 00:16:12 ] ありがとうございます。 おっしゃるとおり、一度ページを表示後 document.cookieに値をセットすることで送信することができました。 確かにめんどうな手続きになってしまいますね。
335 名前:デフォルトの名無しさん [2007/07/22(日) 18:52:52 ] 【派遣ネガティブ根性チェック】 3つ以上、チェックがつけばアナタの性格はひん曲がっており、 ネガティブ負け組派遣人生を歩んでいます。 □派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う □派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする □仕様とは正社員から口伝されるものだ □耳で聞いた仕様を正確に覚えていないのは自分の責任だ □昼食は必ず派遣先の社員と行くべきだ □自分の仕事で問題が発生しても解決するのは派遣の仕事ではない □派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい □自社で仕事なんてできるわけがない □派遣労働の問題点の話題が出ると感情剥き出しにして反論する □派遣労働の問題を指摘する人は嫌いだ □派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい □奢ってくれる派遣先正社員を尊敬する □自分の月額金額を知らないのは当然だ、単金を聞いてはいけない □派遣先正社員より自分の生涯収入が低いのは当然だ □チビは派遣先にかわいがってもらいやすいから派遣には有利だ
336 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 09:44:53 ] 面白くないコピペするなよ。
337 名前:デフォルトの名無しさん [2007/07/23(月) 11:10:04 ] Visual C++で書いた自前のプログラムから、EXCELを制御したいのですが オートメーション関係(?)の良い入門書をご存じないでしょうか? 本格的なOLEサーバーを作りたいとかではなく、やりたいことは 「EXCELシートを作って、そこにデータを書き込んで、簡単な表を作る」 程度のことなのですが。
338 名前:デフォルトの名無しさん [2007/07/23(月) 12:33:37 ] 検索位しろ。ボケ。 ttp://www.ujasiri.com/prglib/vc/excel/vc_excel.html#imp_graph_HasAxis
339 名前:デフォルトの名無しさん [2007/07/23(月) 13:41:08 ] ありがとうございます。 でも、やりたいことの実現方法が知りたいのではなくて 探しているのは「書籍」です。 お教えいただいたサイトに書いてあるようなことが「解説」してある 入門書は無いでしょうか? 「OLE/ActiveXの内部構造を知る/独自のサーバーを作る」というよりは、 「EXCEL/WORD/IEなどを外部から薄く利用してみる」って感じのものです。 私自身は大昔に「Inside COM」「Inside OLE」というような書籍で 勉強したのですが、「そこまで知りたくない人=自作プログラムで EXCELを使いたいだけ」っていう人向けの良い書籍を探しているのですが なかなか見つからなくて。
340 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 13:54:17 ] C++からExcelはニッチ過ぎてないかもしれないね。 VBからExcelを操作する本と、 C++からオートメーションを使用する本の2冊は必要になるだろう。
341 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 19:57:07 ] C++でVBSをホストした方が早い気がする
342 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:00:51 ] VC++からのExcelオートメーションなんて、いつもVBAのヘルプ見ながらやってるな。
343 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 16:25:39 ] 普通にvbaでいいじゃん
344 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 19:18:39 ] すでにVisual C++で作ったアプリにExcel出力機能を実装したいんでしょうよ
345 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 19:51:02 ] 何をインポートすればいいんだか毎回ググっている俺。
346 名前:デフォルトの名無しさん [2007/07/25(水) 23:43:26 ] 一時期は本屋にOLEやらActiveXやらCOM/DCOMの書籍が 所狭しと並んでいたけど、今はほとんど無いよね。 これから勉強をする人はどーすんだろ?
347 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:28:18 ] .netをとっかかりにしてドツボへ
348 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:45:29 ] これから勉強をする人なんていねーだろ
349 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:55:21 ] PowerPointオートメーションなんてサンプルほとんどねーよ。 アニメーションを一時停止なんてどうすりゃ・・・ 右クリックするとコンテキストメニューでて一時停止されるから、できると思うんだが。
350 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:57:31 ] ヘルプでそれっぽい名前のメソッドを探すとか
351 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 01:02:22 ] やっぱそれしかないよな。 明日もコツコツやっていきますわ。
352 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 20:37:07 ] Office製品を始めサーバを利用するためのドキュメント 見たことないけどそもそも公式に公開してるの?
353 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 21:25:09 ] ウィザードで生成されたヘッダをみて、それっぽいメソッド探す
354 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:06:36 ] ヤッパそうなん。
355 名前:デフォルトの名無しさん mailto:sage [2007/07/27(金) 20:52:44 ] 個々のメソッドやプロパティなどの説明ならMSDNライブラリにもある。 msdn2.microsoft.com/en-us/library/bb149081.aspx こっちは.NET用のプライマリ相互運用アセンブリだけど、ある程度は参考になるはず。 msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel (VS.80).aspx
356 名前:デフォルトの名無しさん [2007/08/06(月) 08:52:50 ] 夏はやっぱりOLE
357 名前:デフォルトの名無しさん [2007/08/08(水) 01:54:21 ] 全然詳しくないので質問させてください。 自称「マネージメントもできる」派遣クンが 「ActiveXが僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 と言っています。 彼のActiveXプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
358 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 17:43:04 ] お答えいたします。 コピペ君って馬鹿だな
359 名前:デフォルトの名無しさん [2007/08/08(水) 18:19:41 ] 派遣はクズ・ゴミ・負け犬だから、許してやれや
360 名前:308 [2007/08/08(水) 18:56:09 ] >>357 もちろん、君の仕事です。
361 名前:デフォルトの名無しさん mailto:sage [2007/08/08(水) 23:14:52 ] じゃあ、派遣クンの存在って意味ないんじゃね?
362 名前:デフォルトの名無しさん [2007/08/09(木) 13:21:10 ] そーです。その派遣クンは意味無いんでとっとと切るべき。
363 名前:デフォルトの名無しさん [2007/09/01(土) 15:47:54 ] でも派遣クンはしがみつくことに必死です。
364 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 05:26:55 ] VARIANT って必ず VariantInit(&hoge); してから使って、 作業が終わったら VariantClear(&hoge); しないといけないのですか?
365 名前:デフォルトの名無しさん mailto:sage [2007/09/02(日) 07:48:55 ] それは空 (VT_EMPTY)のインスタンスを作るのが役目なので、 いきなり何か値を代入して初期化するなら、VariantInitは不要。 ATL::CComVariantもコンストラクタの種類によっては、 VariantInitを行わずに初期化していたはず。 VariantClearは、整数型など解放処理の必要のないデータが 入っていると確実に言えるのなら不要。 BSTR、SafeArray、IUnknown*などが格納されている場合に、 その解放処理を行うのがVariantClearの役目。
366 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 22:48:27 ] そのようですね。 逆に考えて、 VARIANT って必ず毎回 VariantInit(&hoge); してから使って、 作業が終わったら VariantClear(&hoge); すると何か問題あるのですか?
367 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 23:18:21 ] 俺には >>365 に答えがあるように見えるのだが…
368 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 02:03:23 ] リファレンスカウンタの増減を管理して いらないものは勝手に捨ててくれるから VariantInit/VariantClearはちゃんと呼ぶべき ってどっかに書いてあった なんかウソっぽいんですが
369 名前:デフォルトの名無しさん mailto:sage [2007/09/04(火) 03:55:16 ] うそですよぇ
370 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 01:59:48 ] スレ違いだったらごめん。 教えて欲しいことがあります。 VS2005 の VC++(MFC) で ActiveX 作ってるんだけども、 ActiveX 作ってCAB プロジェクトで OCX を CABで圧縮して出力してます。 で、その CAB をWebサーバに置いて各クライアントにインストールすると C:\WINDOWS\Downloaded Program Files にインストールされた ActiveX の「状態」が「不明」となってしまいます。 これってどこかに設定するとことかあるの? それともつくりが悪いのでしょうか。 ググってもそれらしい情報見つからなくて・・・(´・ω・`)
371 名前:デフォルトの名無しさん [2007/09/27(木) 10:43:47 ] BSTR bstr = SysAllocString( L"あうぇくぇあ" ); VARIANT param; param.vt = VT_BSTR; param.bstrval = bstr; 処理 VariantClear( param ); //(1) SysFreeString( bstr ); //(2) (1)と(2)は両方必要? (1)があればOK? おしえてエロイ人
372 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 22:01:03 ] 1までで十分。そのためのVarinatClear
373 名前:デフォルトの名無しさん [2007/09/28(金) 10:23:56 ] ありがとうエロイ人
374 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 08:33:07 ] Visual C++ 6.0でMFC ActiveXコントロールを作成しています。 テキストボックスを拡張したタイプです。 WM_DROPFILESイベントでOnDropFilesメソッドを作ったのですが IEでこのコンポーネントを使った場合に、このイベントが発生してくれません。 VB6.0のフォームに貼り付けると問題ありません。 IEでもファイルのドロップイベントが発生するようにするためには どうしたらよいでしょうか? www.hi-ho.ne.jp/babaq/bfup.html やりたいのは↑みたいなことなのですが これはリストボックスにドラッグできますので できないということはないはずなのですが・・・ よろしくお願いいたします。
375 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 21:29:17 ] >>374 IEのセキュリティでActiveXがアクティブになってないんじゃないの? HTMLのへ張り方みせてみな
376 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:24:46 ] MFCを利用してActiveXコントロールを作成したいのですが、 コントロールで呼び出せるメソッドの引数として、 クラスのオブジェクトを渡せるようなコントロールを作る必要があります。 DISP_FUNCTIONのvtsParamsの値および メソッドのプロトタイプ宣言の引数をどのように定義して、 どのような手続きになりますか?
377 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:26:34 ] >>376 言語は、Visual C++ 6.0です。
378 名前:376 mailto:sage [2007/11/13(火) 21:31:35 ] オブジェクトのポインタが渡せれば、コントロール側で受け取ったポインタを、 本来のクラスポインタへ代入して利用できれば良い と思ったのですが、そもそもそんな事は許されてないのでしょうか。 イメージとしては、 コントロール側では、 void MyActiveX::Test( XXXXX *p ) { CHoge *MyCls = p; MyCls->hoge(); } になり、 呼び出し側では、 CHoge hoge("test"); MyActiveX myCom; myCom.Test( &hoge ); みたいにできるといいなと。
379 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:51:18 ] >>376 ActiveXオブジェクト (IDispatch派生クラス)なら、 普通に受け渡しできると思うぞ。
380 名前:376 mailto:sage [2007/11/13(火) 23:54:45 ] >>379 それは、渡したいオブジェクトでGetIDispatchでIDisptchを受け取って、 コントロール側では、VTS_DISPATCHをvtsParamsとするってことですか? そうである場合はいいのですが、 仮にIDispatch派生でない場合はわかります?
381 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:13:11 ] 普通にできるよ。 VARIANT*でもなんでもActiveX引数にできるものに変換して受け渡しすればいいだけ。
382 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:14:39 ] >>381 詳しく教えてください。
383 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 20:48:47 ] void*でいけるんじゃない?
384 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:48:39 ] VARIANT FAR* でいけました! 尚、ActiveXコントロールからActiveXコントロールをCreateするには、 どうすればいいんでしょうか?CWndのポインタが取得できないようで。
385 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 08:38:07 ] 自作のOCXにオブジェクトのポインタを格納したVARIANTを渡しているのですが、 VARIANT vTest; vTest.plVal = (long*)オブジェクト; vTest.vt = VT_I4 | VT_BYREF; 自作OCX.method( vTest ); VBscriptで自作OCXを呼び出すと、VT_DISPATCHとなります。 しかし渡すオブジェクトはCWndクラスを継承したオブジェクトで、 Dispatchが取得できないので、自作OCXのインタフェースを IDispatchなどにできません。(誤解があるかもしれませんが) 要は自作オブジェクトをOCXの引数として渡す場合、 OCX側はどのようなインタフェースを定義して、 どのようにOCX側へ渡す手続きをするのが望ましいのでしょうか? VC++、VB、VBScriptでも呼び出せるOCXを作成したいです。
386 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 15:21:00 ] VB/VBScriptで扱えるオブジェクトは、IDispatch派生の ActiveXオブジェクトだけなのだから、 自作オブジェクトを表すActiveXオブジェクト(のクラス)が必要。 既存のコードを修正したくなければ、methodの引数のVARIANTが VT_DISPATCHなどだったら上記のActiveXオブジェクト、 そうでなければ、既存の自作オブジェクトのクラスと見做すとでもしたらどうだろう? ところで、そのコード中の「オブジェクト」がクラスへのポインタ型なら、 plValではなくbyrefへ代入し、vtはVT_BYREFだけにしたほうがいいと思う。 こうするとvoid*扱いになる(もちろんVB/VBSからは扱えないが)。
387 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 15:59:58 ] つーか自作オブジェクトにIDispatch実装しとけばいいんじゃね
388 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 22:19:25 ] 質問です。XP、VC++ 2005 で開発を行っています。 IE 上に貼れる独自の ActiveX コントロールを作ろうと思ったのですが、 わけあって、これを MFC や ATL を使わずに、WinAPI を直叩きで作りたいのです。 一から ActiveX コントロールを作るための、何かよい資料はないでしょうか?(本やWebページなど) .NET の普及のせいか、ActiveX 自体なかなか資料が見つかりません。 そもそも、これらを使わずに作るのはほぼ不可能なのでしょうか…。 現在は、MFC や ATL で自動生成されたコードとにらめっこしながらちまちま作っているのですが どうにも層が深く、苦戦しております。 よろしくお願いします。
389 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 23:42:55 ] COMの本がある ttp://www.amazon.co.jp/gp/product/4881357557
390 名前:薄汚い派遣の国、日本 [2007/12/27(木) 03:43:01 ] 最近、職場で「出戻り寄生派遣」という言葉が囁かれています。 派遣契約を切られたにもかかわらず「次の派遣先でも切られてしまって生活できません」 などと 言って泣き落としで現場マネージャーにすら一切話がないまま再派遣契約した人のことです。 今月初め、半年前に切った派遣が出社してきてマネージャーも含めみんなびっくりしました。 影でコソコソ偉い人に泣きついて再契約したそうです。同じ部署の人には黙って・・・ そんなことまでして自宅の近くの派遣先にこだわって人間として恥ずかしくないのですか。 仕事に必要な技術がなく勉強する気もないのを逆手にとって 「私のような人の視点で仕事をすることも大切だと思います」と挨拶された時には みんな凍りついていました。派遣でスキルアップとか言ってる癖に以前と同じように 技術を勉強する気はなく「それは私の仕事ではありません」の一点張り、 派遣で収入アップとか言ってる癖に時給は前回と同じで喜んで再契約。 結局、なんの努力もせずに派遣で安直に収入を得たいだけじゃないですか。 身分不相応な商品のローンを払うために派遣だと当然足りない収入は親にも寄生して、 いつ切られるんじゃないかとビクビクしながら人事権のある人間とだけ仲良くし、 契約終了を通知されれば泣き落とし。悲惨な人生ですね。 氏んだほうがいいんじゃないですか。
391 名前:デフォルトの名無しさん [2007/12/27(木) 03:51:28 ] TesTV⇒テスTV⇒超最新版テスト用TV <デバッグ中のTV> testv.atspace.com/?S&1912501&166?V&v1649107HtgCy45f&278+V&vocaloid2?S&1928546&28@HiSpeedVisionStageOnAirTV
392 名前:デフォルトの名無しさん [2008/01/05(土) 11:54:10 ] COM の話題はどこに?と探してここにたどり着きました. MSXML6 を Visual C++ 2008 Express Edition から アンマネージドで使おうとしています. int main(int argc, char** argv) { //COM を使うスレッドで呼び出す必要がある CoInitialize(NULL); //DOMドキュメントのインスタンスを生成する MSXML2::IXMLDOMDocument3Ptr pDocument; HRESULT hresult; hresult = pDocument.CreateInstance(MSXML2::CLSID_DOMDocument60); //スレッドの終了前に必要なはずだけど //これを入れると main 終了時に _com_ptr_t でエラーが起きる //二重解放? CoUninitialize(); return EXIT_SUCCESS; } main の最後で CoUninitialize を呼ぶべきだと思うんですが, そうではないのでしょうか?
393 名前:デフォルトの名無しさん [2008/01/05(土) 12:02:13 ] う,ほげPtr を使っているということは _com_ptr_t の インスタンスが生成されているわけで,そのデストラクタが 呼び出される前に CoUnInitialize しちゃだめか.
394 名前:デフォルトの名無しさん [2008/01/14(月) 16:59:38 ] zoomtv.web.fc2.com/?1xd04@VisualAirForce zoomtv.web.fc2.com/?1xcvk@ParadiseCityTV zoomtv.web.fc2.com/?1xcz8@DancingDuoMiku
395 名前:デフォルトの名無しさん [2008/01/20(日) 01:53:37 ] 動画リンクテスト 初音ミク www.freewebs.com/photoradio/?1862445 www.freewebs.com/photoradio/?1406819
396 名前:デフォルトの名無しさん [2008/01/21(月) 14:05:25 ] ?友好? ⇒ yoQoo ⇒ youku zoomtv.web.fc2.com/?00XMTI2MjY5NjA&0443%+00XNzMyMTY4NA&0600%+00XMTA1NzcxMTI&0432%+00XMjM5MDM1Ng&0455%+00XMTM1MTY5ODg&0357%@HiSpeedVision
397 名前:デフォルトの名無しさん [2008/01/22(火) 01:18:08 ] 動画にアクセスしたらzoomeのDQNは早い 70Mbpsぐらい出たよ インターネットなら 透過スピードに近いのではないだろうか? www.lunascape.jp/community/ Lunascape Core Version 4.5.2.1 / ANSI Operating System Version 6.0.6000 Internet Explorer Version 7.0.6000.
398 名前:デフォルトの名無しさん [2008/01/22(火) 11:51:36 ] rubyのwin32OLEを使ってIEを操作してるんだけど、フレームの情報を取得しようとすると OLE error code:80070005 in <Unknown> Access is denied ってエラーがでるんだが、iframeで別ドメイン参照しているフレームなのでアクセスできないってことかな? (同一ドメインだとアクセスできることは確認した) なんとかフレームの中身を知る方法ないですかね?
399 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 02:07:12 ] フレームを別に開く
400 名前:デフォルトの名無しさん [2008/02/10(日) 01:01:29 ] ODLはマイクロソフトの作ったものではないし、オートメーションはマイクロソフトの開発した技術だと理解しています。 で、属性でoleautomationというのがありますが、このようなキーワードがあると、まるで、ODLがオートメーションを想定し、 COMの一部としてオートメーションをサポートしているかのような印象を持ってしまいます。 でも、これはマイクロソフトが拡張した属性なのですよね?? COMは初心者で最初にやるのがマイクロソフトのプラットフォームなので良く分からず、変なことを聞いてるかもしれませんが。
401 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 05:36:01 ] >>400 odlとはまた古いものを・・・ MSはCORBAの初期メンバーだったんだけど、 あまりに策定が遅いんでたもとを別れ独自のOLE2/COMへ進路をとることになった。 その関係でCOMとCORBAで共通の概念やキーワードを使ってる事がある。 まあそのくらいの関係なので基本的にMS独自と考えるべき。
402 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:25:29 ] >>401 なるほど、良く分かりました。ありがとうございます。
403 名前:デフォルトの名無しさん [2008/02/16(土) 15:01:55 ] 「ActiveX inside out」って本で勉強中です。 IClassFactoryっていうのはCoCreateInstanceの中から呼ばれるらしいですが、 OleView.exeでCOMオブジェクトをいくつか見てみましたが、IClassFactoryというインタフェースを実装している奴が無いのが多いです。 (っていうか、IClassFactoryを持つものがまだ見つかりません(^^)) DirectShowのフィルタ(マイクロソフトは、DirectShowフィルタはCOMじゃない、とか意味フなことを言ってますが)では ファクトリ用の関数をCOMオブジェクト提供者が実装し、これをレジストリに登録しているようです。(CFactoryTemplateっていうやつを使って) IClassFactoryってのはCOMのマネージャがCOMロード時に使用する手段の一つに過ぎないのでしょうか? もしそうだとすると現在はどのような方法でCOMオブジェクトの開発者がインスタンス作成手段を提供するのが一般的ですか?
404 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:08:23 ] IClassFactoryの取得は、インプロセスサーバの場合、 DLLから公開されているDllGetClassObject関数を使う。 アウトプロセス鯖の場合はまた別だけど今は省略。 こいつからクラスファクトリを得るため、 IClassFactoryを実装したオブジェクトを公開する必要はない。 だからOleViewで探したって見付からないのも不思議ではない。
405 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:10:17 ] >>404 なるほど、そうでしたか。 早速の回答ありがとうございますm(_ _)m
406 名前:デフォルトの名無しさん [2008/02/17(日) 03:04:37 ] ここには凄い詳しい方がいらっしゃるので、調子に乗ってまた質問させてください。 自分は本をよんでるだけでアヤフヤな理屈しかなく、経験がないので分かってないのですが、 IDispatchと言うのは、「IDispatchを継承して作成したインタフェースのメソッドやプロパティーを文字列で参照できる」という機能を提供するものなのでしょうか? 例えばあるオブジェクトがIFooというインターフェースを提供し、 IFooにはint foo(int i)なるメソッドがあるとします。 またIDispatchを継承したIMyDispatchがあるとし、 これもint mydispmethod(int i)というメソッドがあるとします。 この場合、IMyDispatchに対してIFoo::foo()をdispidに変換させ、Invokeすることは可能なのでしょうか? それともIMyDispatchのmydispmethodはIDにしてInvokeできるけれども、fooはそうすることで呼ぶ事はできないのでしょうか?
407 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:35:58 ] >>406 望みの回答になっているかどうか分からないけど。 IDispatchインタフェースを提供しない Obj1 というオブジェクトがあって foo() というメソッドを持ち、 IDispatchインタフェースを提供する Obj2 というオブジェクトがあって bar() というメソッドを持つとき、 Obj2 では名前 "bar" をキーにしてメソッド bar() を呼び出すことができる(名前をID変換してから Invoke)が、 Obj1 では名前 "foo" をキーにしてメソッド foo() を呼び出すことはできない。 あくまで、自分のオブジェクトだけに関係するので、 Obj2がIDispatchインタフェースを持っているからといって Obj1 に対して何か(名前のID変換とかInvokeとか)できるということはない。
408 名前:名無し募集中。。。 mailto:sage [2008/02/17(日) 07:48:25 ] DDEの質問はこのスレでいいですか?
409 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 09:52:43 ] 流石にそれは普通のWin32 APIスレで聞いたほうがいいと思う。
410 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:54:04 ] >>407 ということは、あるオブジェクトがIDispatchを公開していれば、そのオブジェクトの他のインタフェースのメソッドも 文字列で呼び出せるってコトでしょうか?
411 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 14:03:19 ] >>410 IDispatch派生インターフェイスを実装・公開していて、ほかのメンバにDISPIDが振ってあって、デュアルインターフェイスならOKじゃね? 場合によってはただのディスプインターフェイスだとほかのカスタムインターフェイスのメソッドに関連づいてないことはあるかもしれない。
412 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:30:26 ] >>411 IDispatch派生インタフェース以外の、(同じオブジェクト上の)インタフェース上のメソッドも、DISPIDを振ることが出来るんですね。 すると、IDispatchだけを要求すれば、その他のインタフェースは要求しなくともその他のインタフェース上のメソッドが利用できると。 ついでにお聞きすると、デュアルインタフェースである必要があるのですか? ところでIDispatchの仕組み(つまりオートメーション)とは単にVBやJavaScriptがCOMにアクセスするために用意された仕組みなのかな? (C++だとvtblでアクセスできるし、好きなインタフェースをQueryInterfaceで要求できるし。 しかもVBの場合、内部でCoCreateInstanceを呼び出しを行い、その時に要求するインタフェースがIDispatchらしいし。 まさにVBの為にあるような印象。。)
413 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:23:20 ] >>412 ごめん勘違いするようなこと書いた。 DISPIDはディスプインターフェイスかデュアルインターフェイスにしかつけられないはず。カスタムはだめ。 カスタムインターフェイスのメソッドが使いたいなら、ディスプインターフェイスやデュアルインターフェイスから間接的に呼ぶ必要がある、と思う。 オートメーションの考え方はスクリプト言語向けと考えていいと思うよ。
414 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 17:13:13 ] >>413 ああ、なるほど、良く分かりました。 いろいろありがとうございます。
415 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:19:49 ] >>412 idispatchは、まさにこのスレタイどおりオートメーションのための機能だよ
416 名前:302 [2008/02/22(金) 16:34:45 ] ATLでActiveX コントロールの開発をしています。 ブラウザにてembedタグで埋め込んでおり、 そのとき "src"属性を使ってファイル名を渡していますが そのパス名の命名則がよくわかりません。 たとえば、 "file://aaa/bbb"だとネットワーク上の"\\aaa\bbb"を表し、 "file:///c:/aaa/bbb.ccc"だとローカルの"c:\aaa\bbb"を表しているようですが このへんのルールを調べるためのポインタをどなたか教えていただけないでしょうか?
417 名前:416 [2008/02/22(金) 16:36:52 ] すみません、一部間違いがありました。 (誤) "file:///c:/aaa/bbb.ccc"だとローカルの"c:\aaa\bbb"を表しているようですが (正) "file:///c:/aaa/bbb"だとローカルの"c:\aaa\bbb"を表しているようですが
418 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 16:42:14 ] VISTAでのUACに関する質問です。 VC++2008で、ブラウザ(IE)から実行するMFC ActiveX(ocx)の開発をしています。 OCXでレジストリやファイルを操作したいので管理者権限で実行したいんですが MANIFESTUACにrequireAdministratorを設定してリソースにマニフェストを埋め込んで いるにもかかわらず、実行時に権限昇格のダイアログが出ません。 当然ですが、レジストリにアクセスする際にエラーが返ってきます。 IEを管理者権限で実行するか、UACを切れば問題なく動くのですが、事情がありユーザに それを要請することができません。 実行ファイルではなくOCXやDLLで権限昇格させることはできないんでしょうか?
419 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 22:09:45 ] そりゃ昇格はプロセス単位で行われるから、 例えIEから実行されるOCXでなくとも昇格できないだろうな。 とりあえず、(標準設定の)信頼済みサイトの中では、 保護モードオフだから普通のアプリケーション並の権限は得られる。
420 名前:418 mailto:sage [2008/02/27(水) 00:45:59 ] >>419 どもです。やっぱ、ライブラリから昇格要求は無理ですよねぇ。。 仮想化をうまく使ってなんとか対処しようと思います
421 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 23:39:22 ] >>420 具体的にどこを弄るのかにもよるけど レジストリやファイルの読み書きの権限を変えてしまうって手もあるよ。 OSのなら非常識だけどね
422 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 02:35:13 ] VC++2005を使ってIE上で動作するプラグインを作っています。 質問ですが、HTML上のJavaScriptから var f = function(){window.alert("ALERT");}; axobject.AddListener(f); のように任意のタイミングで実行したい関数を リスナーとして設定する(ActiveXからJavaScriptの関数を実行する)ことはできるのでしょうか? また、 axobject.SetData({aaa: 'aaa', bbb: 'bbb'}); のようにJSON形式で渡したデータの中身を得る方法はありますでしょうか? よろしくおねがいします。
423 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:31:25 ] 叶姉妹
424 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:53:41 ] >>422 IActiveScriptでググれば、それなりにサンプルとか引っ掛かると思いまつ。 JSONでの受け渡しは無理っぽいような気もするけど、運が良ければ VARIANT配列で渡ってくれるかも。
425 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 17:01:23 ] >>422 JSONつーか、それ単なるJavaScriptのリテラルだから、最悪IDispatchで叩ける気がするが。
426 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 18:19:41 ] >>425 kwsk plz
427 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 01:23:06 ] VARIANTに入ってるIDispatchのInvokeをDISPATCH_PROPERTYGETで叩けば、とりあえず名前の分かってる値は取得できる。
428 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 17:01:48 ] あるActiveXがあって、それをC++で利用したいのですが、 dllで提供されていて、 どのように自分のプログラムとリンクさせて使えばいいのか解りません。 通常、普通ならばヘッダファイルとlibが一緒に提供されてるので それを使えばリンク可能だと思うのですが、 今回はdll単体しかありません。 こんなことは可能でしょうか?
429 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 17:23:59 ] DLLにタイプライブラリが入ってれば、VC++なら #import "hoge.dll" とかやればいけたりもする。
430 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:16:08 ] COMはlibでリンク不要なのが利点
431 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:26:26 ] ttp://support.microsoft.com/kb/238393/ja ttp://homepage1.nifty.com/markey/ruby/win32ole/win32ole03.html
432 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 20:38:53 ] 利点なのか?libが無いとそんなにイイの? 俺はlibの方が埋め込まれたタイプライブラリよりずっといいと思うんだが
433 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 21:36:29 ] タイプライブラリを埋める話なんてしてませんが
434 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:52:30 ] 個人的にはDLLをLoadLibraryして関数ポインタ取得するのがベスト
435 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 04:53:30 ] dispatch + invoke でほとんど片付くよな
436 名前:デフォルトの名無しさん [2008/03/18(火) 20:36:06 ] 質問。 VistaだとIShellFolderViewDual3にFilterViewというのがあって これに"*.jpg"なんかを設定すると、*.jpgのみが表示されるエクスプローラーコントロールが使えるのだが これをXPで実装するにはどうしたらいい? msdn2.microsoft.com/en-us/library/bb761289 (VS.85).aspx
437 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 23:21:13 ] このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている 糞だけど、政治的な理由で無理やり使わされているんですよね。 もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。 ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
438 名前:デフォルトの名無しさん mailto:コピペとか [2008/03/19(水) 04:59:35 ] わかんないよ
439 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 03:35:43 ] VistaのShell32.dllをコピー
440 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 23:08:16 ] >>437 Eclipseのことですね。わかります。
441 名前:デフォルトの名無しさん [2008/04/21(月) 11:29:53 ] IDL の記述ってどこかで標準化されているの? Microsoft 独自? CORBA なんかでも同じような 役割のファイルを見かけるけど拡張子だけ同じで 中身は異なるものなんでしょうか?
442 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:47:17 ] >>441 IDLは一般名詞。Interface Definition Language。 OMG IDLはOMGが標準化したCORBA用のIDL。 MIDLはMSがCOMインターフェイスの記述用に作ったIDL。 XPIDLはMozillaで使われるXPCOM用のIDL。 少なくともOMG IDLはSUN-RPCのXDRがベースだった希ガス。
443 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:00:32 ] >>441 >>401 も参考になるかも。
444 名前:デフォルトの名無しさん [2008/04/21(月) 19:44:26 ] なるほど漠然とではあるけど事情がわかった気がする. 普段はMIDLしか使わないけど、最近は COM よりも .NET が使われるようになってきてるし、一方で Mozilla 系はまた別の仕掛けを使っているようなんで、 もうちょっと広く見てみることにします。
445 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 23:07:50 ] 元ネタはOSF DCEだとINSIDE OLEにはあったな
446 名前:デフォルトの名無しさん [2008/04/28(月) 04:47:18 ] 集団ストーカーは恐怖心で僕を操った。 どんな方法で僕を恐怖させたんだろう?って思ってたが、一つの方法があった。 SSIから何度も迷惑電話をかけてこられ、一度来てくれさえすれば二度と電話しないと、 絶対に売りつけないし、あなたが買いたいと言っても売らないと約束したから出向いた。 そんときにヘッドギアを付けられて頭に電気を流され続けた後、恐怖のあまりに命令どおりに契約書にサインして 銀行もとっくに閉まってる午後8時に銀行員の姉にしつこく電話して時間外の振込みをやってもらった。 そこまでしないと何をされるか分からないと言う恐怖心からだった。 翌日には恐怖心は消えてたが、契約しちゃったし仕方ないかと。 クーリングオフすればいいやと思ったら、クレジット会社がクーリングオフを拒否しやがったから結局140万円のセットを購入させられた。 10万円値引きすると約束してくれたが、それすらも嘘だった。 その事件があったのは新宿の100階建てくらいのビルの中だった。 僕が集団ストーカーに襲われる前、母がそのヘッドギヤを僕に装着した。 僕を操るために。 僕は、5歳のころにも、母からヘッドギヤを装着されてロボットにされたことがある。ゼンリン教の教えを信じるために。 東京で装着されたときは、首が意識と無関係にひねり始めたが、それほど強力でもなかったと思う。 1分もしないうちに首が回らない程度に弱くしてくれたし。 しかし、母から装着されたときは、雷にうたれたくらいに感じたと思う。 なぜ新宿のビルの中にあったのと同じヘッドギヤを福岡の母が持っているのか分からない。 同じゼンリン教なのか。 同じ福岡出身なのか。 集団ストーカーから無理やり薬物を飲まされて警察に言ったら僕を逮捕するとか言うから、警察にも頼れなかった。
447 名前:デフォルトの名無しさん [2008/04/28(月) 13:34:54 ] Win32コンソールアプリケーションでActiveX(OCX)のイベントを受け取ることは可能でしょうか。
448 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 22:50:36 ] >>447 できると思う。
449 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:01:41 ] 僕ハンゲームというゲームをしたいのですが、 そのためにはこれが必要で、調べてみると 「ActiveXの脆弱性」などとよく書いてあります。 どのような症状が、どれくらいの割合で起きるのでしょうか。 潰れて動かなくなったりするのでしょうか?
450 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:48:00 ] PC初心者板行け。
451 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 06:43:20 ] コンテナからDISPID_AMBIENT_SCALEUNITSで得られる文字列って何? インチの場合は、inch? どこかのヘッダに標準的なプロパティ値の定義ってないですか?
452 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 23:25:39 ] WCHAR path = L"c:\\sample.txt"; IPropertySetStorage *pPropSetStg; StgCreateStorageEx( path, STGM_CREATE|STGM_SHARE_EXCLUSIVE|STGM_READWRITE, STGFMT_STORAGE, STGFMT_STORAGE , 0 , NULL , NULL , IID_IPropertySetStorage , reinterpret_cast<void**>(&pPropSetStg) ); 以上でファイル内にプロパティーデータ領域を作り プロパティにカスタムタブを作成したのですが、 プログラム上からカスタムタブにデータを書くのってどうしたらいいのでしょうか。
453 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 23:45:22 ] >>425 FMTID_UserDefinedPropertiesとIPropertyStorageで。
454 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 23:45:58 ] >>452
455 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 11:15:43 ] <<453 ありがとうございます。
456 名前:デフォルトの名無しさん [2008/06/17(火) 19:13:04 ] javascriptからActiveXのメソッドを呼んで、 そのメソッド内で呼び元のIWebBrowser2インタフェースを取得する方法ってありますか? あったらその方法を教えてください。 ググったんですけどわかりませんでした。
457 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:41:45 ] javascriptでNew ActiveX Objectを使ってテキストファイルを操作するスクリプトを作成したんですけど、 オフラインでは動くんですけど、オンラインでは全く動きませんorz どなたか、詳細がわかる人がいたら教えてください。
458 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:47:42 ] >>467 セキュリティ上仕方ないのでは
459 名前:デフォルトの名無しさん [2008/06/30(月) 17:47:47 ] IEの設定はどうなってます?
460 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:52:36 ] >>456 IWebBrowser2でぐぐったら山ほどサンプルが出てきたが
461 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:53:18 ] >>458 僕へのレスでいいんですよね? やっぱりセキュリティ上の問題でできないんですかね。 インターネットオプションで 「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」を有効にすれば、オンラインでも使えるんすけど、安全マークの付け方がわからないんすよね…。
462 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:56:36 ] 安全マークなら support.microsoft.com/kb/161873/ja のとおりやればつけれるよ
463 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 17:58:53 ] >>462 ありがとうございます! 早速やってみます!!
464 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 00:27:39 ] MSペイントのオートメーションオブジェクトって 無いのでしょうか。 jpeg を開いて tiff で保存したい。 sendkey は泥臭いし。
465 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 07:22:09 ] OpenCV使えばいいんじゃね
466 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 08:47:33 ] GDI+使えばいいんじゃね
467 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:41:25 ] ありがとう
468 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:02:40 ] とは言うものの、会社のきまりで 妙なものはインストールできないんです。 「すでにあるもの」を使いたい、というわけでして
469 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:26:21 ] GDI+はDLL一個をアプリと同じフォルダに置くだけで使える。 つか、Windowsフォルダ以下に置くのはMSが推奨してなかったと思うが。
470 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 06:03:41 ] >MSペイントのオートメーションオブジェクト ないようだね。 >GDI+ GDI+ならXPからデフォで入ってるし、MS謹製だから妙なものではない。
471 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 23:12:23 ] ありがとう。 しみじみとうれしい
472 名前:マイク ◆yrBrqfF1Ew mailto:sage [2008/07/19(土) 07:14:06 ] _ ∩ ( ゚∀゚)彡 Automation! Automation!! ⊂彡
473 名前:デフォルトの名無しさん [2008/08/01(金) 11:40:29 ] 自分が呼ばれた OBJECT タグの codebase の値って取れる?
474 名前:デフォルトの名無しさん [2008/08/05(火) 00:20:52 ] てすと
475 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:26:38 ] >>120 , >>148 アップロードしている物を見たかった…。 WSHでExcelのイベントをフックしたいのですが可能なのでしょうか?
476 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:37:40 ] 可能 WScript.CreateObject("Excel.Application","Excel_") or WScript.ConnectObject(Application,"Excel_")
477 名前:475 mailto:sage [2008/08/22(金) 16:37:10 ] >>476 通常のオブジェクトはその方法、もしくは WSF で <object> タグでevents="true" とすることでイベント接続できるのは確認しています。 しかし Excel だとうまくいきません。 >>120 >>148 さんの仰っていたことも、そういうこと(通常の方法ではイベント接続できない)だと思うのですが…。
478 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:28:22 ] PowerShell使えば?
479 名前:デフォルトの名無しさん [2008/08/28(木) 23:49:43 ] vbscriptやvbaからオートメーションでinternet explorerをいじるスクリプトを 作りたいのですが、internet explorerのプロパティやメソッドがわかりません。 すごく探したのですが一覧であるようなのが見当たりません。 home.att.ne.jp/zeta/gen/excel/c04p44.htm とかを見たら (例) Sub test() Dim ieApp As Object Const URL As String = "home.att.ne.jp/zeta/gen/excel/ " Set ieApp = CreateObject("InternetExplorer.Application") ieApp.Navigate URL ieApp.Visible = True Set ieApp = Nothing End Sub とかって書いてあるのですが、ここで使われてる.Navigateみたいな、そういうのが 一覧であるようなリファレンスってないのでしょうか? IEに対してオートメーションでやりたい操作があってもできません。
480 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 00:35:58 ] 一応、本家本元はここだけど。 msdn.microsoft.com/en-us/library/aa752127.aspx
481 名前:デフォルトの名無しさん [2008/08/29(金) 13:50:14 ] >
482 名前:デフォルトの名無しさん [2008/08/29(金) 13:51:12 ] >480 ありがとうございます。 表示させたホームページの文章をコピーするのはどうやるのですか?メソッドがありません…。
483 名前:デフォルトの名無しさん [2008/08/29(金) 18:28:04 ] 最初パソコンを起動して立ち上げたときに -2147024770:オートメーション エラーです。 指定されたモジュールが見つかりません。 と出てきます。 消しても数秒ごとにでてきてかなわない状態です。 一回ログオフして入ると出てはこないんですが。 どうしたら消えるんでしょうか? 悩んでいます。
484 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:30:17 ] >>482 DocumentプロパティでHTML DOMが得られるから、煮るなり焼くなり好きにしろ。
485 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:23:16 ] >>483 detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1017432910 似たようなことが書いてあるけどちがう?
486 名前:デフォルトの名無しさん [2008/08/30(土) 09:56:58 ] VisualStudio2003,C#でエクセル用のCOMアドインを作成しているのですが、 レンジに関数式のテキストを出力する事がどうしてもできません。 コードは以下のように、InvokeMember()を利用しています。 object[] args = new object[1]; args[0] = "=Func1(A1,A2)"; // セルにテキスト出力したい内容 // objRangeはRangeオブジェクトとする objRange.GetType().InvokeMember("Value",BindingFlags.SetProperty,null,objRange,args); 実行すると、指定したレンジに =Func1 とだけ出力されます。 まさかと思いますが、関数テキストの出力はできないのでしょうか? わかる方がおられましたら、回避策など教えていただけないでしょうか。
487 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 12:01:56 ] 普通式を設定するときは「Value」じゃなくて「Formula」に設定するんじゃないの?
488 名前:デフォルトの名無しさん [2008/08/30(土) 16:07:57 ] Formulaでも駄目でしたが、=を入れていたからかもしれません。 言われてみれば、Formulaってメンバがあるのだからこれを使えばできそうですね。 家には環境がないので、週明けに試してみます。
489 名前:デフォルトの名無しさん [2008/08/30(土) 18:10:46 ] >>485 解決しました〜 なんかスパイウェアのせいでなってたみたいで駆除した 後やってみると、みごとにパーフェクトでした。
490 名前:デフォルトの名無しさん mailto:age [2008/12/13(土) 01:44:03 ] 質問です。 今WSHでやっている処理のうち、あまりにも重い一部の処理を ネイティブコードに移そうと考えています。 そのために、そのコードとのインターフェースを取るため、 これをCOMコンポーネント?にしたいのですが… 目的としては、単に処理をバイナリに移譲するだけなので、 filesystemオブジェクトのように不可視なものでよく、 単に数個の関数と、コールバックによるイベント処理と、 例外発生処理だけを実装したいのです。 なんか、良い資料とか、本とかないでしょうか? 教えてください偉い人。
491 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 13:15:52 ] winofsql.jp/sh/html/build_com.htm
492 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:17:39 ] >>491 どうも、 おかげで、jscriptから自作オブジェクトの関数が実行できました。 ただ、まだ自作オブジェクトからjscriptのメソッドをコールバックで 実行する方法がわかりません。 なにかヒントになるような情報を教えてください偉い人・・・ ちなみに、VC++.net 2003?使ってます…
493 名前:490=492 mailto:age [2008/12/17(水) 01:18:26 ] 一応質問なんでageときます・・・
494 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 02:04:58 ] jscriptのオブジェクトもIDispatchインターフェースを公開しているCOMだよ。
495 名前: 【大吉】 [2009/01/01(木) 18:58:30 ] >479 さんの質問と関連してるかもしれませんが オブジェクトが持っているプロパティやメソッドを 一覧で取得するメソッドというものはあるのでしょうか?
496 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 19:21:05 ] ttp://jp.rubyist.net/magazine/?0003-Win32OLE
497 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 21:04:37 ] >>495 昔、会社の後輩がVBScriptかVBAかを使ってやってたんだけど、やり方を聞くのを忘れてた…。 >>496 ではRubyのCOMラッパを使ってるのかな。
498 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 13:07:39 ] >>496-497 ありがとうございます でも結局判りませんでした ひきちぎりおねがいします
499 名前:497 mailto:sage [2009/01/03(土) 14:21:54 ] >>498 >ひきちぎり -> ひきつづき? 「タイプライブラリ」「取得」でググってみると、いくつかサイトが引っ掛かったんで この辺を調べてみては? ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200606/200606_06060024.html ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200605/200605_06050064.html ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200205/02050070.txt TLBINF32.DLLを使えば何とかなりそうだけど、逆に詳細が分かったら教えて欲しいかも…。
500 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 16:46:16 ] ありがとうございます なんとかなりそうです うまくいったらご報告します
501 名前:デフォルトの名無しさん [2009/01/03(土) 21:50:20 ] Set tlb=CreateObject("TLI.TLIApplication") Set t=tlb.TypeLibInfoFromFile("C:\winnt\system32\dcomext.dll").TypeInfos on error resume next for i=1 to t.Count WScript.Echo "========" WScript.Echo t(i).Name Set m=t(i).Members for j=1 to m.Count WScript.Echo " " & m(j).Name next next
502 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:05:32 ] Const acSysCmdAccessDir = 9 'As Long Dim tl 'As TLI.TypeLibInfo Dim eif 'As TLI.InterfaceInfo Dim em 'As TLI.MemberInfo idx = 0 Set tl = CreateObject("TLI.TLIApplication") Set t = tl.TypeLibInfoFromFile(CreateObject("Access.Application").SysCmd(acSysCmdAccessDir) & "msacc9.olb") 'DoCmdはインターフェース(クラスではない) for each eif In t.Interfaces if eif.Name = "DoCmd" then for each em in eif.Members '使用できない隠しコマンド?は省く if em.AttributeMask = 0 then WScript.Echo em.Name end if next exit for end if next Set t = Nothing Set tl = Nothing
503 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 22:18:50 ] ttp://moz-addon.g.hatena.ne.jp/ZIGOROu/20071017/1192644948 ttp://moz-addon.g.hatena.ne.jp/ZIGOROu/20071017/1192650663 ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list112.shtml ttp://www.roy.hi-ho.ne.jp/mutaguchi/bbs/list41.shtml ttp://pc.2ch.net/win/kako/1009/10091/1009175619.html (807) ttp://www.geocities.co.jp/SiliconValley-Oakland/4672/
504 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:14:39 ] ttp://mail.python.org/pipermail/python-list/2000-June/040129.html
505 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:18:54 ] Function GetTypeName(TliVarType) Select Case TliVarType Case 8192 : sTemp = "Array" Case 70 : sTemp = "Object" Case 11 : sTemp = "Boolean" Case 8 : sTemp = "String" Case Else GetTypeName="" Exit Function End Select GetTypeName = " As " & sTemp End Function
506 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 00:19:35 ] Set tlb = WScript.CreateObject("TLI.TLIApplication") Set t = tlb.TypeLibInfoFromFile(CreateObject("Access.Application").SysCmd(acSysCmdAccessDir) & "msacc9.olb") on error resume next for each o in t.TypeInfos s = "" for each m in o.Members s = s & m.Name & ";" & o.Name & "." & m.Name & "(" param = "" for each p in m.Parameters Set v = p.VarTypeInfo s = GetTypeName(v.VarType) if param = "" then if p.Optional then param = param & "[" & p.Name & s & "]" else param = param & p.Name & s end if else if p.Optional then param = param & "[, " & p.Name & s & "]" else param = param & ", " & p.Name & s end if end if next s = s & param & ")" & GetTypeName(m.ReturnType) & ";" & m.HelpString & vbCrLf next WScript.Echo s next
507 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 09:31:02 ] >>501-506 いただきました ありがとうございます
508 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 04:54:31 ] kaso
509 名前:デフォルトの名無しさん [2009/02/09(月) 16:15:46 ] chinko