我需要向第三方的程序的文本框中赋值。代码如下,但是一直获取不到窗口的句柄?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要向第三方的程序的文本框中赋值。代码如下,但是一直获取不到窗口的句柄?相关的知识,希望对你有一定的参考价值。

我需要向第三方的程序的文本框中赋值。代码如下,但是一直获取不到窗口的句柄?希望大家帮我看下Private Sub Command2_Click()Shell App.Path & "\VNC4\vncviewer.exe", vbNormalNoFocusDim hwn As LongDim twn As Longhwn = FindWindow(vbNullString, "VNC Viewer : Connection Details")twn = GetDlgItem(hwn, 1002) '(用SPY + 找的)SendMessage twn, WM_SETTEXT, 0, "10.71.1.1" '//输入IP地址If hwn = 0 ThenLabel1.Caption = "失败"ElseLabel1.Caption = "成功"Label2.Caption = hwnEnd IfEnd Subhwn 一直是0

参考技术A 目前想到的方法:
1、findwindow 获取程序的窗口句柄
2、findwindowex 找到该文本框的句柄
3、GetWindowText或,sendmessage发送WM_GETTEXT消息获取内容
4、根据获取的文本类型(unicode/ansi)做最后的转换、清除空白处理

不能理解的是句柄一直在变化,怎么处理?
消息内容怎么处理?

由于我的级别低,现在没有分给同志们了。。。。。。
一个文本框,或者是静态的,请问怎样可以获得它的文本的句柄,然后直接调用,读取其中的文本呢?
用SendMessage(GetDlgItem(hwndDlg,IDC_EDIT),WM_GETTEXT, _MAX_PATH ,reinterpret_cast<LPARAM>(lpFile) );只能得到文本的副本!希望高手解决!
要是vc++的,其它的看不懂!最好用winapi!mfc也行!在学mfc!追问

我已经知道我错误在哪里了 已经恢复正常了

为文本框赋值时,文本框验证方法不起作用

【中文标题】为文本框赋值时,文本框验证方法不起作用【英文标题】:textbox validated method does not work while assigning value to textbox 【发布时间】:2014-01-18 11:57:16 【问题描述】:

我正在使用 c#.net 2.0 winforms。我在表单中使用 errorprovider 控件来验证文本框。虽然我以编程方式为该文本框赋值。文本框验证方法不会从文本框中获取值或将其视为空白值。如何在文本框中不输入值来验证我的文本框。这是代码

private void textBox6_Validated(object sender, EventArgs e)

    bTest6 = txtRegExPinIsValid(textBox6.Text);
    if (bTest6)
    
        this.errorProvider1.SetError(textBox6, "");
    
    else
    
        this.errorProvider1.SetError(textBox6, "This field must contain Exactly 6 digits");
    
 

 private bool txtRegExPinIsValid(string textToValidate)
 
     Regex TheRegExpression;
     string TheTextToValidate;
     string TheRegExTest = @"^\d6$";
     TheTextToValidate = textToValidate;
     TheRegExpression = new Regex(TheRegExTest);
     // test text with expression 
     if (TheRegExpression.IsMatch(TheTextToValidate))
     
         return true;
     
     else
     
         return false;
     
  

在执行更新操作时,我用 ms 访问表中的值填充文本框。如果值正确,请留下它,否则我必须更新它。请帮我。提前致谢

【问题讨论】:

如果我手动将光标保留在每个文本框中并执行更新操作一切正常.. 【参考方案1】:

我建议将验证代码放在单独的方法中。从Validated 事件和代码中您需要以编程方式验证的位置调用该方法,如下所示:

// Call this from wherever you need to validate a TextBox
void PerformValidation(TextBox textBox)

    bTest6 = txtRegExPinIsValid(textBox6.Text);
    if (bTest6)
    
        this.errorProvider1.SetError(textBox6, "");
    
    else
    
        this.errorProvider1.SetError(textBox6, "This field must contain Exactly 6 digits");
    


private void textBox6_Validated(object sender, EventArgs e)

    PerformValidation(textBox6);

【讨论】:

谢谢布雷特!!你给了一个完美的解决方案。我找到了一个替代解决方案。将所有布尔值分配给“真”。我强制验证方法将文本框视为已验证,因为这些值是通过从表中查询以编程方式分配给文本框的。在更新操作时,如果我想更正文本框中的值,则会调用验证方法。否则我就离开它,因为 bool 值已经设置为 true。

以上是关于我需要向第三方的程序的文本框中赋值。代码如下,但是一直获取不到窗口的句柄?的主要内容,如果未能解决你的问题,请参考以下文章

VB中如何通过在文本框中输入时间日期然后直接赋值给系统时间日期,从而达到修改系统时间的目的?

为文本框赋值时,文本框验证方法不起作用

VC++ 如何向Edit框中动态赋值

如何为 RadioButton 赋值

MFC中,如何控制另一个程序?

如何在 C# Winforms 程序的文本框中突出显示文本?