2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MagicXpaで自作dllを使用する

Last updated at Posted at 2022-10-09

Magic xpaとは

イスラエル生まれのローコード開発ツールです。
プログラミング経験が少なくても簡単に扱えるが、欲しい情報が見つかりづらいのが難点でした。
自分が困ったので同様の疑問を持つ方に向けて記事を投稿した次第です。

自作dllを作成する

MagicXpaは外部のdllを連携して利用することが可能です。
まずは連携用の自作dllを作成しましょう。

プロジェクトの作成

クラスライブラリ(.NET Framework)を選択します。
VirtualBox_win10_20221003_09_10_2022_19_50_37.png

フレームワークの選択

今回は.NETFramework4.8を選択します。
VirtualBox_win10_20221003_09_10_2022_19_51_44.png

COMクラスの実装

今回は簡単な足し算と引き算のメソッドを持つクラスを作成します。

COMコンポーネントとCOMクラスの実装
using System;
using System.Runtime.InteropServices;

namespace ComLinkagePractice
{
    [Guid("2A6CDF08-1C87-49B6-9058-7AEE529E1594")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface ComLinkagePracticeInterface
    {
        int Addition(int num1, int num2);
        int Subtraction(int num1, int num2);
    }

    [Guid("74498E3C-2777-4F9E-A3D1-EC97558EBF44")]
    [ClassInterface(ClassInterfaceType.None)]
    public class ComLinkagePractice : ComLinkagePracticeInterface
    {
        public int Addition(int num1, int num2)
        {
            return num1 + num2;
        }
        public int Subtraction(int num1, int num2)
        {
            return num1 - num2;
        }
    }
}
Assemblyinfo.cs
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。
// 制御されます。アセンブリに関連付けられている情報を変更するには、
// これらの属性値を変更してください。
[assembly: AssemblyTitle("ComLinkagePractice")]
// AssemblyDescriptionがMagicXpaのタイプライブラリで表示されます。
[assembly: AssemblyDescription("ComLinkagePractice")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ComLinkagePractice")]
[assembly: AssemblyCopyright("Copyright ©  2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントから
// 参照できなくなります。COM からこのアセンブリ内の型にアクセスする必要がある場合は、
// その型の ComVisible 属性を true に設定してください。
[assembly: ComVisible(true)]

// このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります
[assembly: Guid("1abad2b4-423a-48db-aa2f-6d03ce33f2d1")]

// アセンブリのバージョン情報は、以下の 4 つの値で構成されています:
//
//      メジャー バージョン
//      マイナー バージョン
//      ビルド番号
//      リビジョン
//
// すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます
// 既定値にすることができます:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

署名を行う

VirtualBox_win10_20221003_09_10_2022_20_12_33.png

プロジェクトのビルド

VirtualBox_win10_20221003_09_10_2022_17_47_49.png

GAC(Global Assembly Cache)への登録

複数のアプリケーションで共有してdllを利用する場合はGACへ登録する必要があります。
プロジェクトのビルドでdllが作成されましたのでGACへ登録します。

//GACにインストールする
gacutil -i 登録するdllのパス

//すべてのパブリッククラスを登録し、タイプライブラリ.tlbを生成および登録する
regasm 登録するdllのパス.dll /tlb: 生成するdllのパス.tlb

//実際のパスを当てはめてみる
gacutil -l C:\Users\admin\Source\Repos\ComLinkagePractice\ComLinkagePractice\obj\Release\ComLinkagePractice.dll
regasm C:\Users\admin\Source\Repos\ComLinkagePractice\ComLinkagePractice\obj\Release\ComLinkagePractice.dll /tlb:C:\Users\admin\Source\Repos\ComLinkagePractice\ComLinkagePractice\obj\Release\ComLinkagePractice.tlb

Magic xpaで自作dllを使用する

モデルリポジトリでdllを定義します。
型はOLEを選択しタイプライブラリでdllを選択します。
VirtualBox_win10_20221003_09_10_2022_18_08_18.png

オブジェクト名を設定します。
ここでは使用したいクラスを選択します。
VirtualBox_win10_20221003_09_10_2022_18_08_41.png

dllを実際に使用する

データービューでdllやメソッドに必要な引数、戻り値などの変数を設定します。
VirtualBox_win10_20221003_09_10_2022_20_49_09.png
ロジックで外部コールのCOMを選択しデータビューのCOMが設定されている変数を選択します。
VirtualBox_win10_20221003_09_10_2022_18_22_17.png
使用するメソッドを選択します。
VirtualBox_win10_20221003_09_10_2022_18_22_26.png
後はいつもの通りにパラメータと戻り値を設定します。
VirtualBox_win10_20221003_09_10_2022_18_24_27.png

フォームを作成する

VirtualBox_win10_20221003_09_10_2022_21_15_05.png

完成したものがこちら

Magicxpaで計算処理を書いていないのにちゃんと足し算と引き算が出来ています!
ComLinkagePractice.gif

最後に

今回はあくまで簡単なロジックでしたが、これを活かせばMagicxpaでは苦手な処理もC#に委託することが可能です。
自作dllを利用して快適なMagicライフをお楽しみ下さい。

参考文献

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?