« 2019年4月 | トップページ | 2020年1月 »

2019年7月の2件の記事

2019/07/27

C#で作成したDLLに、呼び出し元オフィスソフトのHwndを渡す

C#でOffice Add-inを作成した時に、VSTOを使うと簡単にエクセルのhWndをフォームの親に設定することができました。

C# で ウィンドウハンドル を 取得する 方法

https://garafu.blogspot.com/2016/08/cs-get-wndhndl.html

 

COM(DLL)として実装したライブラリにhWndを渡す方法に苦労しました。呼び出し側からApplication.Hwndを渡しても上記の方法だとDLL側で受け取れず・・・

それっぽいキーワードで検索するとdllから他のアプリを操作するためにウィンドウハンドルを捕まえる方法がいろいろ見つかるのですが、こんな単純なことが見つからず・・・

結局、どんなキーワードで検索したか忘れましたが、System.Windows.Forms.IWin32Window を継承したクラスを作ると簡単に受け取ることができました。

Creating a IWin32Window from a Win32 Handle

http://ryanfarley.com/blog/archive/2004/03/23/465.aspx

 

Access 2013 アドインの作り方

Access以外のオフィスソフトはVSTOでアドインの作成がサポートされているのに、何故かAccessだけ仲間外れ。

どうしてもAccessのアドインを作る必要があり、いろいろ調べたのですが、Access 2010とか少々古いバージョンの記事ばかりで2013以降についての記事が見つからずドツボにはまりました。

 

アドインマネージャの新規読込で、デフォルトで選べる拡張子は accda、accde、mda、mbe の4種類の為、古いバージョンや特殊な開発方法が必要なのかと思い込んでいましたが、結果的に accdbファイルでも、モジュールにコード仕込んで、システムテーブルの USysRegInfo を追加すればよかっただけでした。

 

Access アドインの実装方法については、下記のサイトがとても詳しく解説されています。

 

■T'sWare Access Study ~Vol.2 アドイン入門~

https://tsware.jp/study/indexv2.htm

« 2019年4月 | トップページ | 2020年1月 »

2020年9月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ