【OLE】オートメーション総合スレ【ActiveX】
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
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
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
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
kaso
509 :
デフォルトの名無しさん:2009/02/09(月) 16:15:46
chinko
510 :
デフォルトの名無しさん:2009/06/19(金) 23:03:45
ActiveXコントロールからAfxThrowOleDispatchExceptionで、
VB6.0のフォームに例外を通知したとき、
オートメーションエラーのエラーコードとエラーディスクリプションになってしまうのですが、
AfxThrowOleDispatchExceptionのパラメータで設定した
エラーコード、エラーの説明は、どのようにしたら参照できるのでしょうか?
どなたかご存知の方教えて下さい。
Visual Studio 2008のMFCでダイアログにHTML表示させたいので、
ActiveXのMicrosoft web browser貼り付けて、メンバ変数にして
Navigateしました。
ここまではちゃんと表示されてOKです。
次に、ブラウザ上で右クリで出るポップアップを出せないように
しようと思って、メンバ変数にしたやつのウインドウプロシージャーを
取り替えて(サブクラス化)WM_RBUTTONUPを捕まえようとしたのですが、
WM_RBUTTONUPが何故か来ません(他のメッセージ(WM_SIZEとか)は来ます)
当然、右クリするとポップが表示されてしまいます。
何かご存知の方いませんか?
なんでもかんでもサブクラス化で解決しようとするな。
IDocHostUIHandler::ShowContextMenuつーのがちゃんと用意されとるわ
513 :
511:2009/06/23(火) 16:42:03
ナイスなヒントに多謝!
ActiveXコントロールにドラッグ&ドロップして、ドロップされたファイルを処理したいのですが、
htmlに貼り付けてブラウザでそこにドロップすると、ブラウザ側にドロップされちゃうのです。
とりあえず画像ファイルをコントロールに表示する予定なのですが、jpgとかを落とすと、
それがブラウザにドロップした事になって表示されちゃいます。
WM_DROPFILESのハンドラも、DragAcceptFiles()も立てています。
コントロールにドロップされるようにするにはどうすれば良いでしょうか?
HTAにしたら?
ありがとうございます。
HTAにしても同じでした..orz
.RegisterAsDropTarget=False
>>517 ありがとうございます。
調べてみます。
ActiveXでCoCreateInstanceで作成したインスタンスを
使ってWebの画面を画像化しようとしているのですが
IEを2つ起動している状態で2個目のIEでCoCreateInstanceをすると
なぜか1個目のIEに対してインスタンスを生成している様で
上手くいきませんどなたかこんな現象をご存知の方がいればお教えください。
521 :
デフォルトの名無しさん:2009/07/31(金) 23:49:15
JavaScriptでScripting.FileSystemObjectを生成しようとすると
モジュールが見つかりません。
と出るのってどうしたら直るんですか?
モジュールを入れる
523 :
521:2009/08/02(日) 21:34:53
>>522 その方法が検索してもどうしても見つからないんです・・
c:\windows\system32\scrrun.dll
525 :
521:2009/08/03(月) 15:12:25
>>524 どうやって入れるのか?と思いましたがとりあえずregsvr32してみました。
そしたらエラー出なくなりました!ありがとうございました
526 :
516:2009/08/04(火) 17:02:04
>>519 すまんす、レスが遅れて。
まで出来てないです。
RegisterAsDropTarget=False ってのは、IEのコントロールか何かの設定ですか?
今作っているActiveXを、htmlの<object>タグでCLSID指定してやって動かしてます。
それで自作のActiveXにドラッグ&ドロップしたいのですが、ブラウザ側にドロップされちゃいます。
>>526 IDropTargetを実装してRegisterDragDrop()を呼ぶ。
ファイル名が取れればいいだけだからこんな素の方法は嫌だ
ってことかもしれんが、まぁ一方法として。
529 :
デフォルトの名無しさん:2009/08/10(月) 01:26:57
ActiveXって現役の技術なの?古いイメージがあるんだけど、代替技術は存在しない?
今までMS系の技術なんて見向きもしなかったんだけど、
今度、VB6.0で動いていたアプリをIE向けのWebアプリに作り替えることになって、
ActiveXコントロールに替わる技術なんてあるんだっけ?と思って質問してみました。
ちなみに既存のVB6アプリでどんなActiveXコンポーネントを使っているのかはまだ不明。
判明するのは3か月以上先。
そもそもActiveXがよくわかっていなくて、
ActiveXの書籍は古いものばっかりだし、この技術ってレガシーコンポーネントを再利用するとき以外で用途あるの?
ローカルリソースを扱うなら必須の技術?
まぁ、先手を打って、勉強しておきたいっていうだけ。
まだまだ現役なんじゃない?
代替技術もないんじゃない?
目的達成のための別の技術があるというだけで。
FlashもActiveXコンポーネントだよね?
許されるのは、FlashとAcroabat Readerのみ。
他はウィルス扱いw
>>530 なるほど
結局は、どんな手段で目的を解決するか、ですね。
選択の幅は広い方がいいんで、勉強してみる
Windowsの仕組みを知るいい機会だし
Q. 自動保守#K9K?_D[L とは一体何なのか?
A. 外部サイトへの突撃大好きな真性厨房
韓国突撃でお馴染みの自動保守
最近は自動焼人 ★として2ちゃんねるのボランティアにも精を出す日々
だがそんな彼にも、人間らしい部分はあったのだ…
名言集
『アパッチ砲はワシが作った』
『お前が規制系キャップ取れるか審査してやるよ』
『いつもサボってばかりのキャップがウゼえ』
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』
『俺の経歴カックイイだろ?』
最近のニュース
8月15日の韓国突撃の際に歴史的大敗を喫する。ラジオでの敗戦宣言のときに声が震えていた
本人は体調不良と言っているが…
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
ちょっと質問いいかな?
VC++6.0でMFC ActiveX ControlWizardを開くと
最初に、プロジェクトに含まれるコントロールの数を聞かれるよね?
ここでコントロール数を2個にして作成するActiveXコントロールと同等のものを
.net2005で作成できる?
ActiveX今まで殆ど触った事なくて、どんな語から調べていけばいいのかわからない状態なんだ…
OCXをCABファイルからインストールさせているのですが
64bitのIEでは、失敗します。
64bit用のINFファイルの書き方とかあるのでしょうか?
>>537 問題ない。誰も64ビット版IEなんて使っていないから気にするな。
ところで、そのOCXは64ビットで作っている?
OCXは64ビットで作っていません
だからダメなんでしょうか?
64ビットで作って試してみます。
540 :
デフォルトの名無しさん:2009/12/02(水) 20:44:11
C#でOfficeオートメーションを使う仕事を割り振られたのですが、
ネットにあまり情報が落ちてないので、どこから勉強していいか解りません。
何か良い書籍があったら教えてください。
オフィスオートメーション 【OA】
オフィスオートメーションとは、コピー機やFAX、コンピュータなどの情報機器を用いて、事務作業を効率化すること。
>>540 残念、微妙にスレ違いのようだ。
>>540-541 OfficeとはMicrosoft Officeのことで、WordとかExcelの操作かもしれないではないか。
もし、そうだったらまずはVisual Studio Tools for Office関係を調べればいいと思う。
Windows2003 Office2003環境です。
ローカルサービスから
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application app =new Excel.APplucation();
Excel.Workbook wbook;
wbook=(Excel.Workbook)(app.Workbooks.Open(filepath,省略,省略…省略));
wbook.PrintOut(省略,省略,省略,省略,PrinterName,省略,省略,省略);
をコーディングしていますが、プリンタへのスプールがスプール中で動作が停止してしまいます。
同様のコーディングをWord,PowerPointにて行ってますが、同様です。
Windows2008 64bit版ではメモリの要領不足とエラーが出ます。
動作が正常に行かない理由ってわかりますか?
544 :
デフォルトの名無しさん:2010/02/15(月) 09:03:15
age
CでIEを利用して作っているウェブブラウザで
ブラウザのダブルクリック時の挙動を変えたいんですが
IHTMLDocument2のポインタを取得して
put_ondblclickで自前の関数を登録しようとして
ここで渡す自前の関数はどう宣言して渡せばいいんでしょうか?
>>537-539 だいぶ前の話で恐縮ですが
64bitのOCXを作れば、64bit版IEでも動作しました。
ありがとうございます。
C++で ActiveXコントロールを作成しています。
また、この ActiveX内から
DLL(VB.NET)の関数を呼んだりしています。
ここで質問なのですが
VB で RaiseEventしたイベントを、
C++の方で捕まえる方法はありますか?
MFCでActiveXコントロールを作って、
ウィザードでプロパティを追加して、
PX_Hogeを追加して、
IEから<OBJECT><PARAM 〜></object>で読み込ませると・・・
PX_Hogeで指定した変数には値が設定されるんだが、
ウィザードで生成された関数は呼び出されない。
これってこういうもの? ちなみにMSVC2005。
549 :
548:2010/07/12(月) 11:31:04
とりあえず解決した。
IPersistPropertyBag経由ではDoPropExchangeしか呼ばれない、
メソッド経由で呼ばれたときはウィザードが生成した関数しか呼ばれない、
でいいのかな。
仕方ないんで、DoPropExchangeの中で、pPX->IsLoding()だったら、
ウィザードが生成したOn〜Changedをごにょごにょと呼ぶことにした。
これが普通なのかしらん?
ふぅ