10/01/15 01:17:15
農業界なんて先細り真っ只中だから
そういう考え方はハズレだったのだろうな
320:デフォルトの名無しさん
10/01/15 02:11:03
C#でDLLの作成をしようと試みています。
DLLはアプリケーションのプラグインで、プラグインは本体から登録された各dllに対し、
グローバル関数が呼ばれるような仕様になっているのですが、
(例えばplugin.dllのInit()を呼び出す、といったような形になっている)
C#はグローバル関数をサポートしていないため、どのように受ければよいのかが分かりません。
C#のみでこのような呼び出しに対応する方法はあるでしょうか。それともラッパーをC++等の他の言語で書いて、
経由するしかないでしょうか。
321:デフォルトの名無しさん
10/01/15 02:16:59
後者YES
C++/CLIでも使った方が楽じゃねえかと思う
322:デフォルトの名無しさん
10/01/15 02:17:51
>>320
リフレクションで呼び出すか、プラグインinterfaceのDLLを準備する。
323:デフォルトの名無しさん
10/01/15 02:19:41
プラグイン側がC#で呼び出すほうは違うのかな?
なら>>322はなしで。
324:デフォルトの名無しさん
10/01/15 02:24:00
グローバル関数って言ってるからLoadLibrary+GetProcAddressだろう
注意しておくとグローバル関数にするだけじゃ駄目な
エクスポートしないと
325:デフォルトの名無しさん
10/01/15 02:27:46
>>321
ありがとうございます。C#の勉強も兼ねているので、ちょっと泥臭いことも含めて色々試して見ます。
>>322-333
リフレクション云々が分からずぐぐってみてましたが、DLL側で属性の定義をしておくと
C#のDLLを呼び出す場合にアセンブリ情報を使って条件分岐等出来るということなのでしょうか。
また別で調べてみます。どうもありがとうございました。
326:デフォルトの名無しさん
10/01/15 02:32:49
泥臭いも何も、ネイティブからLoadLibraryで呼び出される類のプラグインはC#のみだと作成できないぞ
327:デフォルトの名無しさん
10/01/15 03:04:54
コンテナをいくつか配置して、その中に動的にボタンなどを入れ込む場合
プログラム全体としてうまく管理する方法はないでしょうか?
クリックイベントはコンテナ単位で共通にした上で
ボタンなどを動的に作る際の名前(Name)に
記号+識別番号A+識別番号Bを文字列化しています。
ただこの方式だとクリックイベントを処理する際にNameから
元の番号を切り出して・・とあまりスマートではないので
よろしくお願いします。
328:デフォルトの名無しさん
10/01/15 03:08:12
もう少し目的を具体的に書けよ
うまく管理したいって何を
ボタンごとに情報を持たせたいとかそれだけならButton.Tagに何か入れとけ
329:デフォルトの名無しさん
10/01/15 03:19:08
共通のイベントハンドラから、どのボタンが押されたのかを識別する為に
名前から特定の文字列を抜き出して識別する現状の方法以上にいい方法があるか
…ってこと?
330:デフォルトの名無しさん
10/01/15 03:19:17
>>325
ちょっとひねればプラグインのサポートはそんなに難しくないよ。
まず、プラグインの雛形となるinterfaceやenumを定義した基本となる情報を入れたDLL(A)を作成する。
それを元にプラグインのDLL(B)を作成する。
アプリ本体は(A)に参照設定を持っておいて、(B)をリフレクションで読み込む。
(B)のコードはinterface越しに扱えばいい。
331:デフォルトの名無しさん
10/01/15 03:25:43
派生コントロール作ってsenderから独自プロパティ参照して云々するのが
オブジェクト指向的にはあってるんじゃないの
「コード書くのがめんどくせぇ」っていうなら今の方法がいちばんだからそのままにしとけ
332:デフォルトの名無しさん
10/01/15 03:27:19
だね。
333:デフォルトの名無しさん
10/01/15 03:29:23
>>328
>Button.Tagに何か入れとけ
>>329
はい
>>331
つまりボタンなりを継承したクラス作ってそこに・・・ということですか
334:デフォルトの名無しさん
10/01/15 03:30:19
ああ・・中途半端な状態で・・・orz
>>328
>Button.Tagに何か入れとけ
確かにこれもいいですね
335:デフォルトの名無しさん
10/01/15 04:20:50
URLリンク(www.atmarkit.co.jp)
↑で紹介されているPetshop3.0についてなんですが
記事ではコードを読むことを勧めていたので
URLリンク(www.microsoft.com)
記事中の↑のページから、サイト内をいろいろ探してみたのですが
ソースコードの所在がわかりません。
どこを見落としているのか、自分ではとうとう発見できずにいます。
どなたかわかる方いらっしゃいましたらご教授願えないでしょうか。よろしくお願いします。
336:デフォルトの名無しさん
10/01/15 04:48:49
何のギャグだよ
それインストールすりゃはいってる
337:デフォルトの名無しさん
10/01/15 07:15:58
>>326
ILをいじるという方法はあるけどな。
338:デフォルトの名無しさん
10/01/15 07:29:59
formにlistboxをFillで貼り付けてウインドウサイズを変更すると
きっちり張り付くわけじゃないんですね
たぶんlistboxのアイテムの高さの関係で制御してるんでしょうけど・・
339:デフォルトの名無しさん
10/01/15 10:02:47
逆P/Invokeっていう冗談みたいなものがあったな
ildasmで逆コンパイルしてILを直接編集しろとか
MS公式のドキュメントに普通に書いてあって目を疑った