ボタンのプロパティを取得しようとしていますが、spy ++のウィンドウツールをドラッグすると、ボタン(その場合は「iniciargravação」)しかし、このような、むしろボタングリッド親、:QtアプリケーションでSpy ++がボタンに到達しない
なぜそれがあるとどのように私は、ボタンのプロパティを取得できますか?私はそれの情報ツールを自動でしようとしたが、私は同じ動作を取得します。このように使用して
public class WindowHandleInfo
{
private delegate bool EnumWindowProc(IntPtr hwnd, IntPtr lParam);
[DllImport("user32")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EnumChildWindows(IntPtr window, EnumWindowProc callback, IntPtr lParam);
private IntPtr _MainHandle;
public WindowHandleInfo(IntPtr handle)
{
this._MainHandle = handle;
}
public List<IntPtr> GetAllChildHandles()
{
List<IntPtr> childHandles = new List<IntPtr>();
GCHandle gcChildhandlesList = GCHandle.Alloc(childHandles);
IntPtr pointerChildHandlesList = GCHandle.ToIntPtr(gcChildhandlesList);
try
{
EnumWindowProc childProc = new EnumWindowProc(EnumWindow);
EnumChildWindows(this._MainHandle, childProc, pointerChildHandlesList);
}
finally
{
gcChildhandlesList.Free();
}
return childHandles;
}
private bool EnumWindow(IntPtr hWnd, IntPtr lParam)
{
GCHandle gcChildhandlesList = GCHandle.FromIntPtr(lParam);
if (gcChildhandlesList == null || gcChildhandlesList.Target == null)
{
return false;
}
List<IntPtr> childHandles = gcChildhandlesList.Target as List<IntPtr>;
childHandles.Add(hWnd);
return true;
}
}
void printWindows(IntPtr parent, int tabLevel)
{
var w = new WindowHandleInfo(parent);
foreach (IntPtr h in w.GetAllChildHandles())
{
string caption = GetTextBoxText(h) ?? "not found";
Debug.Write(new string('\t', tabLevel));
Debug.WriteLine(caption);
printWindows(h, tabLevel + 1);
}
}
int GetTextBoxTextLength(IntPtr hTextBox)
{
// helper for GetTextBoxText
const int WM_GETTEXTLENGTH = 0x000E;
int result = SendMessage(hTextBox, WM_GETTEXTLENGTH, 0, IntPtr.Zero);
return result;
}
string GetTextBoxText(IntPtr hTextBox)
{
const int WM_GETTEXT = 0x000D;
int len = GetTextBoxTextLength(hTextBox);
if (len <= 0) return null; // no text
StringBuilder sb = new StringBuilder(len + 1);
SendMessage(hTextBox, WM_GETTEXT, len + 1, sb);
return sb.ToString();
}
:
は、私はこのように、C#コードから、そのボタンのプロパティを取得しようとしたIntPtr parent = FindWindow(IntPtr.Zero, "my app title");
printWindows(parent, 0);
しかし、私はIniciarはボタンをgravaçãoに関連anyhingを見ることができません。
本当にボタンですか?描くことができますか? –
@ DanielAWhite私は分かりません。どのように私は確かに知ることができますか?私はアプリケーションがQtインターフェイスを使ってビルドされていることを知っています。もしも問題があれば... – user834697
他のツールのようなWindowsインスペクタは、spy ++/autoと同じ動作をしますinfo tool – user834697