差分

ナビゲーションに移動 検索に移動

C♯のモジュールからC++のDLLを呼び出してみる

14,254 バイト除去, 2019年7月26日 (金) 16:46
デスクトップ環境を使用している場合、リモートでデスクトップを使用したい場合があります。<br/>今回はX11vncを使用して、リモートでデスクトップに接続してみようと思います。久しぶりにやったら、すっかり忘れていたので覚書…
= X11vncのインストール =C++のDLLプロジェクト作成 ==まず、C++のDLLを作成するときの注意点…作成するプロジェクトは、「Win32プロジェクト」を選択するんだ。<br/>下記コマンドを実行して、X11vncをインストールします。[[ファイル:CShapeToCppDll-005.jpg]]
<syntaxhighlight lang="bash">sudo apt-get install x11vnc</syntaxhighlight>
(確認されたら「y」を押してください)<br/>
だぁ~っとなってインストールが完了します。
<syntaxhighlight lang="bash">test@debian:~$ sudo apt-get install x11vnc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc-data
提案パッケージ:
tcl-tclreadline
以下のパッケージが新たにインストールされます:
libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc x11vnc-data
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 3 個。
3,503 kB のアーカイブを取得する必要があります。
この操作後に追加で 10.3 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.jp.debian.org/debian stretch/main amd64 libtcl8.6 amd64 8.6.6+dfsg-1+b1 [985 kB]
取得:2 http://ftp.jp.debian.org/debian stretch/main amd64 libtk8.6 amd64 8.6.6-1+b1 [754 kB]
取得:3 http://ftp.jp.debian.org/debian stretch/main amd64 libvncclient1 amd64 0.9.11+dfsg-1.3~deb9u1 [141 kB]
取得:4 http://ftp.jp.debian.org/debian stretch/main amd64 libvncserver1 amd64 0.9.11+dfsg-1.3~deb9u1 [210 kB]
取得:5 http://ftp.jp.debian.org/debian stretch/main amd64 tcl8.6 amd64 8.6.6+dfsg-1+b1 [123 kB]
取得:6 http://ftp.jp.debian.org/debian stretch/main amd64 tcl amd64 8.6.0+9 [5,468 B]
取得:7 http://ftp.jp.debian.org/debian stretch/main amd64 tk8.6 amd64 8.6.6-1+b1 [71.8 kB]
取得:8 http://ftp.jp.debian.org/debian stretch/main amd64 tk amd64 8.6.0+9 [5,506 B]
取得:9 http://ftp.jp.debian.org/debian stretch/main amd64 x11vnc-data all 0.9.13-2+deb9u1 [216 kB]
取得:10 http://ftp.jp.debian.org/debian stretch/main amd64 x11vnc amd64 0.9.13-2+deb9u1 [992 kB]
~ 中略 ~あと…アプリケーションの設定では「DLL」と「空のプロジェクト」を選択してね。<br/>[[ファイル:CShapeToCppDll-001.jpg]]<br/>
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
gnome-menus (3.13.3-9) のトリガを処理しています ...
libtcl8.6:amd64 (8.6.6+dfsg-1+b1) を設定しています ...
libtk8.6:amd64 (8.6.6-1+b1) を設定しています ...
tcl8.6 (8.6.6+dfsg-1+b1) を設定しています ...
tk8.6 (8.6.6-1+b1) を設定しています ...
tcl (8.6.0+9) を設定しています ...
tk (8.6.0+9) を設定しています ...
x11vnc (0.9.13-2+deb9u1) を設定しています ...
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...</syntaxhighlight>
= 自動ログインの設定 =X11vncですが、基本的にログインしている状態でないと、リモートで接続することができません。<br/>なので、画面からリモートで接続したいユーザーで自動ログインするようにします。空のプロジェクトが作成されたら「cpp」「h」「def」ファイルを追加するんだ。今回は「CppDll.cpp」「CppDll.h」「CppDll.def」を追加したよ。
PC本体にディスプレイ及びキーボード・マウスを接続して、ログイン画面を表示させます。<br/>
[[ファイル:Debian-x11vnc-001.png | 400px]]<br/>
パスワードを入力して、「サインイン」をクリックまたはエンターキーを押します。そしたら、プロジェクトのプロパティを開いて「構成プロパティ→リンカー→入力→モジュール定義ファイル」に「CppDll.def」を設定するんだ。<br/>(DebugとReleaseでそれぞれ設定する必要があるんだよ。)<br/>[[ファイル:Debian-x11vncCShapeToCppDll-002.png | 400pxjpg]]<br/>
デスクトップが表示されたら、画面右上の下向き矢印「▼」をクリックします。<br/>== DLLのコード ==[[ファイル:Debian-x11vnc-003=== ヘッダーファイル(*.png | 400px]]h) ===<br/syntaxhighlight lang="cpp">#ifndef DLLAPI#define DLLAPI extern "C" __declspec(dllimport)#endif
ログインしているユーザーが表示されるので、それをクリックします。<br/>DLLAPI long __stdcall _Sum(const long p_Number1, const long p_Number2);[[ファイル:Debian-x11vnc-004.png | 400px]]<br/syntaxhighlight>
「アカウント設定」をクリックします。=== コードファイル(*.cpp) ===<br/syntaxhighlight lang="cpp">[[ファイル:Debian-x11vnc-005.png | 400px]]<br/>#define DLLAPI
「ロック解除」をクリックします。<br/>[[ファイル:Debian-x11vnc-006#include "CppDll.png | 400px]]<br/>h"
パスワードの入力が促されるので、ユーザーに対応したパスワードを入力します。<br/>DLLAPI long __stdcall _Sum(const long p_Number1, const long p_Number2){ return p_Number1 + p_Number2;}[[ファイル:Debian-x11vnc-007.png | 400px]]<br/syntaxhighlight>
「認証」ボタンをクリックします。=== モジュール定義ファイル(*.def) ===<br/syntaxhighlight lang="text">[[ファイル:Debian-x11vnc-008.png | 400px]]<br/>LIBRARY CppDll
ロックが解除されるので、「自動ログイン」をクリックして、「オン」にします。<br/>[[ファイル:Debian-x11vnc-009.png | 400px]]<br/> 設定の確認をするために、ウインドウ左上の左向き矢印「<」をクリックします。<br/>[[ファイル:Debian-x11vnc-010.png | 400px]]<br/> 「ユーザー」をクリックします。自動ログインがオンになっていればOKです。<br/>[[ファイル:Debian-x11vnc-011.png | 400px]]<br/>EXPORTS _Sum最後に「<strong><u>ログインした状態のまま</u></strongsyntaxhighlight>」にしておきます。
= X111vncのパスワード設定 = C♯のプロジェクト作成 ==認証なしで画面が見れてしまうのは危険(特にログインしっぱなし)なので、パスワードを設定します。<br/>以下のコマンドを実行します。<syntaxhighlight lang="bash">x11vnc -storepasswd</syntaxhighlight>ほとんどそのまま作るんだけど…ソリューションのコンパイル対策をしておくよ。
すると、パスワードの入力が2回求められるので、2回とも同じパスワードを入力します。<br/>=== ビルドイベントの設定 ===また、ホームディレクトリの「.vnc」ディレクトリに保存するか問われるので、「y」を入力しますC++のDLLはソリューションフォルダ直下の「Debug」や「Release」フォルダにDLLが格納されてしまうんだ。そうすると、デバッグするときにDLLが見つからないので、ビルドイベントを使ってコピーしてしまうよ。以下のように設定してね。(「Release」コンパイルするまでは「Release」フォルダがないのでコメントアウトしているよ)<br/><syntaxhighlight lang="bash">test@debian[[ファイル:~$ x11vnc CShapeToCppDll-storepasswdEnter VNC password: Verify password: Write password to /home/test/004.vnc/passwd? [yjpg]]/n yPassword written to: /home/test/.vnc/passwdtest@debian:~$ <br/syntaxhighlight>
= X11vncの起動 =最小限のオプションで起動してみます。<br/>以下のコマンドを実行します。<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd</syntaxhighlight>プロジェクトの依存関係の設定 ===上記は、「ディスプレイ番号0(5900ポート)で『~/.vnc/passwd』に設定されたパスワード認証で起動」という意味です。コピーするにもちゃんとリコンパイルされた資源をコピーしないといけないので、プロジェクトの依存関係を設定することで、ビルドの順番を設定するよ。<brBr/>以下のようなメッセージが出て、カーソルが点滅して戻ってこなかったら起動しています(色々言われていますが…www)。ソリューションエクスプローラーからC♯のプロジェクトを右クリックして「ビルド依存関係」→「プロジェクト依存関係」を選択してね。<br/><syntaxhighlight lang="bash">24/06/2019 14:50:39 passing arg to libvncserver: -rfbauth24/06/2019 14:50:39 passing arg to libvncserver: /home/test/.vnc/passwd24/06/2019 14:50:39 x11vnc version: 0.9.13 lastmod: 2011-08-10 pid: 247224/06/2019 14:50:39 Using X display :024/06/2019 14:50:39 rootwin: 0x280 reswin: 0x1400001 dpy: 0x84e7bfe024/06/2019 14:50:39 24/06/2019 14:50:39 ------------------ USEFUL INFORMATION ------------------24/06/2019 14:50:39 X DAMAGE available on display, using it for polling hints.24/06/2019 14:50:39 To disable this behavior use: '-noxdamage'24/06/2019 14:50:39 24/06/2019 14:50:39 Most compositing window managers like 'compiz' or 'beryl'24/06/2019 14:50:39 cause X DAMAGE to fail, and so you may not see any screen24/06/2019 14:50:39 updates via VNC. Either disable 'compiz' (recommended) or24/06/2019 14:50:39 supply the x11vnc '-noxdamage' command line option.24/06/2019 14:50:39 24/06/2019 14:50:39 Wireframing: -wireframe mode is in effect for window moves.24/06/2019 14:50:39 If this yields undesired behavior (poor response, painting24/06/2019 14:50:39 errors, etc) it may be disabled:24/06/2019 14:50:39 - use '-nowf' to disable wireframing completely.24/06/2019 14:50:39 - use '-nowcr' to disable the Copy Rectangle after the24/06/2019 14:50:39 moved window is released in the new position.24/06/2019 14:50:39 Also see the -help entry for tuning parameters.24/06/2019 14:50:39 You can press 3 Alt_L's (Left "Alt" key) in a row to 24/06/2019 14:50:39 repaint the screen, also see the -fixscreen option for24/06/2019 14:50:39 periodic repaints.24/06/2019 14:50:39 24/06/2019 14:50:39 XFIXES available on display, resetting cursor mode24/06/2019 14:50:39 to: '-cursor most'.24/06/2019 14:50:39 to disable this behavior use: '-cursor arrow'24/06/2019 14:50:39 or '-noxfixes'.24/06/2019 14:50:39 using XFIXES for cursor drawing.24/06/2019 14:50:39 GrabServer control via XTEST.24/06/2019 14:50:39 24/06/2019 14:50:39 Scroll Detection: -scrollcopyrect mode is in effect to24/06/2019 14:50:39 use RECORD extension to try to detect scrolling windows24/06/2019 14:50:39 (induced by either user keystroke or mouse input).24/06/2019 14:50:39 If this yields undesired behavior (poor response, painting24/06/2019 14:50:39 errors, etc) it may be disabled via: '-noscr'24/06/2019 14:50:39 Also see the -help entry for tuning parameters.24/06/2019 14:50:39 You can press 3 Alt_L's (Left "Alt" key) in a row to 24/06/2019 14:50:39 repaint the screen, also see the -fixscreen option for24/06/2019 14:50:39 periodic repaints.24/06/2019 14:50:39 24/06/2019 14:50:39 XKEYBOARD: number of keysyms per keycode 10 is greater24/06/2019 14:50:39 than 4 and 100 keysyms are mapped above 4.24/06/2019 14:50:39 Automatically switching to -xkb mode.24/06/2019 14:50:39 If this makes the key mapping worse you can24/06/2019 14:50:39 disable it with the "-noxkb" option.24/06/2019 14:50:39 Also, remember "-remap DEAD" for accenting characters.24/06/2019 14:50:39 24/06/2019 14:50:39 X FBPM extension not supported.24/06/2019 14:50:39 X display is capable of DPMS.24/06/2019 14:50:39 --------------------------------------------------------24/06/2019 14:50:39 24/06/2019 14:50:39 Default visual ID: 0x2124/06/2019 14:50:39 Read initial data from X display into framebuffer.24/06/2019 14:50:39 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/320024/06/2019 14:50:39 24/06/2019 14:50:39 X display :0 is 32bpp depth=24 true color24/06/2019 14:50:39 24/06/2019 14:50:39 Autoprobing TCP port 24/06/2019 14:50:39 Autoprobing selected TCP port 590024/06/2019 14:50:39 Autoprobing TCP6 port 24/06/2019 14:50:39 Autoprobing selected TCP6 port 590024/06/2019 14:50:39 listen6: bind: Address already in use24/06/2019 14:50:39 Not listening on IPv6 interface.24/06/2019 14:50:39 24/06/2019 14:50:39 Xinerama is present and active (e.g. multi-head).24/06/2019 14:50:39 Xinerama: number of sub-screens: 124/06/2019 14:50:39 Xinerama: no blackouts needed (only one sub-screen)24/06/2019 14:50:39 24/06/2019 14:50:39 fb read rate: 180 MB/sec24/06/2019 14:50:39 fast read: reset -wait ms to: 1024/06/2019 14:50:39 fast read: reset -defer ms to: 1024/06/2019 14:50:39 The X server says there are 10 mouse buttons.24/06/2019 14:50:39 screen setup finished.24/06/2019 14:50:39 「依存関係」タブの依存先にC++のプロジェクトが表示されているはずだから、チェックを入れてOKボタンをクリックしてね。
The VNC desktop is: debian:0== C♯のコード ==MVVMモデルでサンプルを作ったからビューモデルが入っているけど…DLLを呼ぶには必要ないから無視してね。PORT=5900== モデル ===<syntaxhighlight lang="C#">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;
******************************************************************************//追加Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?using System.Runtime.InteropServices;
The scheme stores pixel data offscreen on the VNC viewer side for fasternamespace CSharpToCDLLretrieval{ /// <summary> /// MainWindow. It should work with any VNC viewerxaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { /// <summary> /// DLLの関数定義 /// </summary> /// <param name="p_Number1">数値1</param> /// <param name="p_Number2">数値2</param> /// <returns>合計</returns> [DllImport("CppDll. Try it by running:dll")] private extern static Int32 _Sum(Int32 p_Number1,Int32 p_Number2);
x11vnc -ncache 10 ... /// <summary> /// 標準のコンストラクタ /// </summary> public MainWindow() { InitializeComponent(); }
One can also add -ncache_cr for smooth 'copyrect' window motion. /// <summary> /// ボタンクリックイベントハンドラ /// </summary>More info: http: //www.karlrunge.com/x11vnc<param name="sender">イベント送信元</faq.html#faq-client-cachingparam> /// <param name="e">イベント情報</param> private void Button_Click(object sender, RoutedEventArgs e) { //DLLの関数を呼び出す Int32 l_Result = _Sum(300, 500);
//計算結果の表示
MessageBox.Show("計算結果:" + l_Result.ToString());
}
}
}
</syntaxhighlight>
VNC Viewerなどで接続してみてください。<br/>デスクトップが表示されたら、成功です。 === ビュー ===Viewerを終了して気づいた方もいらっしゃるかもしれませんが、この状態だとViewerを終了するとX11vncも終了してしまいます。<br/>ココらへんは、オプションで設定します。  先ずは、終了しないようにします。<br/>終了しないようにするには、「-forever」オプションを指定します。<br/><syntaxhighlight source lang="bashxml">x11vnc -display <Window x:0 -rfbauth ~/Class="CSharpToCDLL.vnc/passwd -forever</syntaxhighlight> あと…表示されているメッセージに基づいてオプションを設定していきます。MainWindow"<syntaxhighlight lang xmlns="bash">24http:/06/2019 15:56:31 X DAMAGE available on display, using it for polling hintsschemas.microsoft.24com/06winfx/2019 15:56:31 To disable this behavior use: '-noxdamage'242006/06xaml/2019 15:56:31 presentation"24/06/2019 15 xmlns:56x="http:31 Most compositing window managers like 'compiz' or 'beryl'24/06/2019 15:56:31 cause X DAMAGE to fail, and so you may not see any screen24/06/2019 15:56:31 updates via VNCschemas.microsoft. Either disable 'compiz' (recommended) or24com/06winfx/2019 15:56:31 supply the x11vnc '-noxdamage' command line option.<2006/syntaxhighlight>xaml"「-noxdamage」を指定したほうが良さそうです。<br/> Title="MainWindow"(正しく理解できていません…) Height="77.056"<syntaxhighlight lang Width="bash525">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage </syntaxhighlightGrid> <Grid.RowDefinitions> <syntaxhighlight langRowDefinition Height="bash5"/>24/06/2019 15:56:31 Wireframing: -wireframe mode is in effect for window moves.24/06/2019 15:56:31 If this yields undesired behavior (poor response, painting24/06/2019 15:56:31 errors, etc) it may be disabled:24/06/2019 15:56:31 - use '-nowf' to disable wireframing completely.24/06/2019 15:56:31 - use '-nowcr' to disable the Copy Rectangle after the24/06/2019 15:56:31 moved window is released in the new position.24/06/2019 15:56:31 Also see the -help entry for tuning parameters. <RowDefinition Height="24/06/2019 15:56:31 You can press 3 Alt_L's (Left "Alt" key) in a row to 24/06/2019 15:56:31 repaint the screen, also see the -fixscreen option for>24/06/2019 15:56:31 periodic repaints. <RowDefinition/syntaxhighlight>「反応が悪い」「塗りつぶしエラー」などが出るのであれば、「-nowf」を設定した方が良いようです。 <brRowDefinition Height="5"/>「-nowcr」は「ウインドウの移動等をしたあとの、長方形のコピーを無効化」って…よくわからないですね… <br/Grid.RowDefinitions>まぁ、エラーが出ない限りは設定する必要はなさそうです。 <br/Grid.ColumnDefinitions <syntaxhighlight langColumnDefinition Width="bash5">24/06/2019 16:03:24 XFIXES available on display, resetting cursor mode24/06/2019 16:03:24 to: '-cursor most'.24/06/2019 16:03:24 to disable this behavior use: '-cursor arrow'24/06/2019 16:03:24 or '-noxfixes'.24/06/2019 16:03:24 using XFIXES for cursor drawing.24/06/2019 16:03:24 GrabServer control via XTEST.</syntaxhighlight>「XFIXES」を調べてみたけどがよくわからないな… <brColumnDefinition/>Wikiによると「いくつかのプロトコルの変更」と書かれている… <brColumnDefinition Width="5"/>ということは、無視したほうが良いのかな? <brColumnDefinition Width="75"/>無効にする場合は「-cursor arrow」か「-noxfixes」を設定するみたい。  <syntaxhighlight langColumnDefinition Width="bash5"/>24/06/2019 16:03:24 Scroll Detection: -scrollcopyrect mode is in effect to24/06/2019 16:03:24 use RECORD extension to try to detect scrolling windows24/06 </2019 16:03:24 (induced by either user keystroke or mouse input)Grid.ColumnDefinitions>24/06/2019 16:03:24 If this yields undesired behavior (poor response, painting24/06/2019 16:03:24 errors, etc) it may be disabled via: '-noscr' <Label24/06/2019 16:03:24 Also see the -help entry for tuning parameters Grid.24/06/2019 16:03:24 You can press 3 Alt_L's (Left Row="Alt1" key) in a row to 24/06/2019 16:03:24 repaint the screen, also see the -fixscreen option for24/06/2019 16:03:24 periodic repaints Grid.</syntaxhighlight>Column="1"スクロール検出に関する設定???<br Content="{Binding Label_Content}"/>「反応が悪い」「塗りつぶしエラー」などが出るのであれば、「-noscr」を設定した方が良いようです。 <br/>Buttonただ…「定期的な再描画については『-fixscreen』を参照」とも言っているので、そちらをヘルプで参照したほうが良いかな?<br/> <syntaxhighlight lang Grid.Row="bash1">24/06/2019 16:03:24 XKEYBOARD: number of keysyms per keycode 10 is greater24/06/2019 16:03:24 than 4 and 100 keysyms are mapped above 4 Grid.24/06/2019 16:03:24 Automatically switching to -xkb mode.24/06/2019 16:03:24 If this makes the key mapping worse you can24/06/2019 16:03:24 disable it with the Column="-noxkb3" option.24/06/2019 16:03:24 Also, remember Content="-remap DEAD実行" for accenting characters.</syntaxhighlight>どうやら自動的に「-xkb」モードに変更されているっぽい。<br/>まぁそれはそれで良いと思うのだけど、メッセージが表示されるのは気持ち悪いので「-xkb」を設定してみる。<syntaxhighlight lang Click="bashButton_Click">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage -xkb</syntaxhighlightう~ん…色々設定が合って難しいなぁ~。 <br/Grid>あと、必要そうなオプションは「-loop」です。<br/Window>「[https://qtotter.wordpress.com/2013/08/23/%E3%80%90ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%86%8D%E6%A7%8B%E7%AF%89%E3%80%91no-04-x11vnc%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/ 【ubuntuサーバー再構築】no.04 x11vncを設定してみる – 犬を一匹飼っている]」によると、「こけたらまた起動し直す」ようです。<br/sourceまぁ、色々あって最終的には…<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -loop</syntaxhighlight>って感じでしょうか?<br/>もし「キーリピート(キーを押しっぱなしにしたときに連続して入力)」を有効にしたい場合は「-repeat」を設定してください。  ビューモデル = X11vncの自動起動設定 =「systemd」を使用して、x11vncをDebian起動時に起動するように設定します。<br/>まずは、「/etc/systemd/system」ディレクトリに「x11vnc.service」ファイルを作成します。<br/>以下のコマンドを実行して、ファイルを作成します。<syntaxhighlight lang="bash">sudo nano /etc/systemd/system/x11vnc.service</syntaxhighlight>内容は以下のとおりです。<syntaxhighlight source lang="bashcsharp">[Unit]Description=x11vnc (Remote access)using System;After=network-onlineusing System.Collections.targetGeneric;using System.Linq;[Service]using System.Text;Type=simpleExecStart=/usr/bin/x11vnc -display :0 -rfbauth /home/[ユーザーID]/using System.Threading.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -loopExecStop=/bin/kill -TERM $MAINPIDExecReload=/bin/kill -HUP $MAINPIDKillMode=control-groupRestart=on-failureUser=[ユーザーID]Tasks;
[Install]//追加WantedBy=graphicalusing System.target</syntaxhighlight>[ユーザーID](2箇所)を前段でログインしっぱなしにしたユーザーIDに変更してください。ComponentModel;
そしたらサービスを起動してみます。<br/>namespace CSharpToCDLL以下のコマンドを実行してください。{<syntaxhighlight lang="bash">sudo systemctl start x11vnc</syntaxhighlight> class MainWindowViewModel : INotifyPropertyChanged正常に実行できているか確認します。 { /// <syntaxhighlight lang="bash">sudo systemctl status x11vnc</syntaxhighlightsummary>以下の様に表示されれば問題ないかと思います。<syntaxhighlight lang="bash">test@debian: /etc/systemd/system$ sudo systemctl status x11vnc.service● x11vnc.service - x11vnc (Remote access)ラベル表示用変数 Loaded: loaded ( /etc/systemd/system</x11vnc.service; disabled; vendor preset: enabled)summary> Active: active (running) since Mon 2019-06-24 17:15:29 JST private String m_Label_Content; 2s ago Main PID: 2761 (x11vnc) Tasks: 2 (limit: 4915) CGroup: /system.slice/x11vnc.service ├─2761 /usr/bin/x11vnc -display :0 -rfbauth /home/test/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -l └─2762 /usr/bin/x11vnc -display :0 -rfbauth /home/test/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -l
6月 24 17:15:30 debian x11vnc[2761]: 24 /06/2019 17:15:30/ <summary> 6月 24 17:15:30 debian x11vnc[2761]: The VNC desktop is: debian:0 /// ラベル表示文字列 /// </summary> 6月 24 17:15:30 debian x11vnc[2761]: PORT=5900 public String Label_Content 6月 24 17:15:30 debian x11vnc[2761]: ****************************************************************************** { 6月 24 17:15:30 debian x11vnc[2761]: Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet? set 6月 24 17:15:30 debian x11vnc[2761]: The scheme stores pixel data offscreen on the VNC viewer side for faster { 6月 24 17:15:30 debian x11vnc[2761]: retrieval this. It should work with any VNC viewer. Try it by running:m_Label_Content = value; 6月 24 17:15:30 debian x11vnc[2761]: x11vnc -ncache 10 .. this.OnPropertyChanged("Label_Content"); 6月 24 17:15:30 debian x11vnc[2761]: One can also add -ncache_cr for smooth 'copyrect' window motion. } 6月 24 17:15:30 debian x11vnc[2761]: More info: http://www get { return this.karlrunge.com/x11vnc/faq.html#faq-client-caching</syntaxhighlight>「-ncache」オプションやってみ?みたいなメッセージが出ていますが…無視します。<br/>試しに「-ncache 10」とか設定してつないでみてください。<br/>m_Label_Content; }特に問題なければそれでいいですが…RealVNCのVNC Viewerだと、超縦長な画面になります…。 }
= 雑感 = /// <summary>自動ログインでログインしっぱなしにする必要があるので、何となく「不安」を感じます。<br ///>プロパティ変更イベントハンドラなんか、色々すればどうにかなるみたいですが…無理矢理感が否めないので、私はここまでとします。 /// <br/summary> public event PropertyChangedEventHandler PropertyChanged;
= 参考サイト = /// <summary> /// プロパティ変更通知[https: ///qtotter.wordpress.com</2013summary> /08/23/%E3%80%90ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%86%8D%E6%A7%8B%E7%AF%89%E3%80%91no-04-x11vnc%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B<param name="p_PropertyName">プロパティ名</ 【ubuntuサーバー再構築】noparam> public void OnPropertyChanged(String p_PropertyName) { if (this.04 x11vncを設定してみる – 犬を一匹飼っている]PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(p_PropertyName)); } } }}<br/source>
[[Category:DebianC♯]][[Category:x11vncC++]][[Category:dll]]

案内メニュー