如何从其他程序的datagridview获取数据

如何从其他程序的datagridview获取数据,第1张

1、通过win32api获取到需要的窗体的handle,然后枚举该窗体的子窗体。

2、对每个子窗体通过sendmessage WM_GetText得到其内容。

窗体上上label listbox textbox的内容(text属性的东西)都可以获取,唯独datagridview的东西获取不了。

我改变方法,通过ReadProcessMemory 来获取进程的内存中的内容 发现仍然没有数据,仅获取到datagridview的id,而其他的空间可以获取到内容。

如果你所有的数据源中都有相同的需要显示的列,那么就循环一下,把需要的列设为trueelse 全为false即可。

for (int count = 0; count < dataGridView1ColumnsCount; count++)

{

if (dataGridView1Columns[count]HeaderTextTri……</blockquote></fieldset>

办法三种(限制Winform对Winform *** 作):

数据量轻量级,实时传值。用Remoting,建立类库,编写方法放在类库文件中,编译成dll文件。建立两个项目,引用他,实现remoting *** 作实时传值

数据量,提倡方法,代码贴出

[DllImport("User32dll", EntryPoint = "FindWindow")]

        public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("User32dll", EntryPoint = "FindWindowEx")]

        public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);

        [DllImport("User32dll", EntryPoint = "FindEx")]

        public static extern IntPtr FindEx(IntPtr hwnd, IntPtr hwndChild, string lpClassName, string lpWindowName);

        [DllImport("User32dll", EntryPoint = "SendMessage")]

        private static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, string lParam);

        [DllImport("user32dll ", EntryPoint = "GetDlgItem")]

        public static extern IntPtr GetDlgItem(IntPtr hParent, int nIDParentItem);

        [DllImport("user32dll", EntryPoint = "GetWindowText")]

        public static extern int GetWindowText(IntPtr hwnd, StringBuilder lpString, int cch);//在事件里写IntPtr maindHwnd = FindWindow(null, "Form1"); //获得句柄   

            int i = 0;

            if (maindHwnd != IntPtrZero)

            {

                MessageBoxShow("找到了窗体!");

                //控件id

                int controlId = 0x000003F4;

                //获取子窗口句柄

                IntPtr EdithWnd = GetDlgItem(maindHwnd, controlId);

                SendMessage(EdithWnd, i, (IntPtr)0, stringFormat("当前时间是:{0}", DateTimeNow)); //赋值没问题,表示句柄正确

                StringBuilder stringBuilder = new StringBuilder(512);

                GetWindowText(EdithWnd, stringBuilder, stringBuilderCapacity);

                MessageBoxShow(stringFormat("取到的值是:{0}", stringBuilderToString()));//取值一直是空字符串

            }

            else

            {

                MessageBoxShow("没有找到窗口");

            }

3 大数据的话还是用数据库吧

以上就是关于如何从其他程序的datagridview获取数据全部的内容,包括:如何从其他程序的datagridview获取数据、DataGridView怎么获取所有列名、C# winfrom datagridview数据获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9342380.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存