#前回の質問に続きます
結局、C#で書くことにしました。
半透明のWINDOWを作って、マウスでDrug-Dropして、他アプリのSCREEN座標を取得したい
#内容
下記のようなFORMをC#で作っており、このウィンドウのコーナー座標を
取得するコードを書いています。
画面の最大時の戻り値をみると、x=-11, y=-11 のような数字が出ます。
この数字は0,0にならないのは、なぜでしょうか?
c#
1using System.Activities; 2using System.Drawing; 3using System.Runtime.InteropServices; 4using System.Windows.Forms; 5 6 7 8namespace ExcelVbaExt 9{ 10 [ComVisible(true)] 11 public partial class Form1 : Form 12 { 13 private bool flg = false; 14 private Point loc; 15 16 public Form1() => InitializeComponent(); 17 18 private void GetPosition_Click(object sender, System.EventArgs e) 19 { 20 flg = true; 21 } 22 private void trackBar1_Scroll(object sender, System.EventArgs e) 23 { 24 ActiveForm.Opacity = ((double)(trackBar1.Value) / 100.0); 25 } 26 public bool status() 27 { 28 return flg; 29 } 30 public void Loc( ref int x, ref int y,ref int w,ref int h) 31 { 32 x = this.DesktopLocation.X; 33 y = this.DesktopLocation.Y; 34 w = this.Width; 35 h = this.Height; 36 } 37 } 38} 39
VBA
1Sub test() 2 3Dim DLL As ExcelVbaExt.Form1 4Dim x, y, w, h 5 6Set DLL = New ExcelVbaExt.Form1 7 8DLL.show 9Do 10DoEvents 11Loop Until DLL.Status 12DLL.loc x, y, w, h 13DLL.dispose 14Debug.Print x, y, w, h 15 16End Sub 17
result
1-11 -11 1942 1176
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。