| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 322 人关注过本帖
标题:请问如何正确选择记事本中的指定行?
只看楼主 加入收藏
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
请问如何正确选择记事本中的指定行?
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

如果没有双字节字符,执行结果是正确
PUBLIC oform1
oform1=NEWOBJECT("form1")
oform1.Show
RETURN

DEFINE CLASS form1 AS form
    Height = 110
    Width = 193
    ShowWindow = 2
    DoCreate = .T.
    AutoCenter = .T.
    Caption = "Form1"
    AlwaysOnTop = .T.
    Name = "Form1"

    ADD OBJECT command1 AS commandbutton WITH ;
        Top = 60, ;
        Left = 48, ;
        Height = 25, ;
        Width = 60, ;
        Caption = "执行", ;
        Name = "Command1"

    ADD OBJECT text1 AS textbox WITH ;
        Alignment = 3, ;
        Value = 1, ;
        Height = 25, ;
        InputMask = "999", ;
        Left = 72, ;
        Top = 24, ;
        Width = 40, ;
        Name = "Text1"

    ADD OBJECT label1 AS label WITH ;
        Caption = "选择第:", ;
        Height = 16, ;
        Left = 24, ;
        Top = 29, ;
        Width = 46, ;
        Name = "Label1"

    ADD OBJECT label2 AS label WITH ;
        Caption = "行", ;
        Height = 16, ;
        Left = 116, ;
        Top = 29, ;
        Width = 46, ;
        Name = "Label2"

    PROCEDURE command1.Click
        #Define EM_SETSEL 0xb1
        #Define EM_LINEINDEX 0xbb
TEXT TO prgprg noshow
2343432435
34454t4365t43
ddffergter
rwew阿德顺丰到付归属感
谁丰东股份23424递四方速递
23424535
水电费45235
3424
endtext
        DECLARE Long FindWindowEx IN WIN32API Long, Long, String, String
        Declare Integer SendMessage In WIN32API as SendMessages Integer,Integer,Integer,String
        Declare Integer SendMessage In WIN32API as SendMessagen Integer,Integer,Integer,Integer
        Declare Integer WinExec in kernel32 string, integer
        winexec("NOTEPAD.EXE",1)
        hWnd = FindWindowEx( 0, 0, "Notepad", NULL )
        SendMessages(m.Hwnd,274,61488,null)
        lnSendHwnd=FindWindowEx(m.hwnd,0,"Edit",Null)
        SendMessages(lnSendHwnd,12,LEN(prgprg)+1,prgprg)
        i=thisform.text1.value
        SendMessagen(lnSendHwnd,EM_SETSEL,SendMessagen(lnSendHwnd,EM_LINEINDEX,i-1,0),SendMessagen(lnSendHwnd,EM_LINEINDEX,i,0))
    ENDPROC

ENDDEFINE


[此贴子已经被作者于2024-11-10 14:42编辑过]

搜索更多相关主题的帖子: Name Integer Caption 选择 Top 
2024-11-10 14:41
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1744
专家分:3333
注 册:2012-2-29
收藏
得分:0 
回复 楼主 sych
在我的机子上运行,出现相同问题,但暂时看不出原因。
2024-11-10 19:39
wcx_cc
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:375
专家分:1169
注 册:2015-10-2
收藏
得分:0 
.................

[此贴子已经被作者于2024-11-19 22:21编辑过]

2024-11-10 23:39
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:708
专家分:2848
注 册:2018-3-13
收藏
得分:0 
改为按宽字符处理试试

[此贴子已经被作者于2024-11-11 09:41编辑过]


这家伙很懒,啥也没留下
2024-11-11 09:37
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:708
专家分:2848
注 册:2018-3-13
收藏
得分:20 
大概这样:
        .... 省略前面代码
        winexec("NOTEPAD.EXE",1)
        hWnd = FindWindowEx( 0, 0, "Notepad", NULL )
        SendMessages(m.Hwnd,274,61488,null)
        lnSendHwnd=FindWindowEx(m.hwnd,0,"Edit",Null)
#IF .F.
    SendMessages(lnSendHwnd,  WM_SETTEXT, LEN(prgprg)+1, prgprg)
    SendMessages(lnSendHwnd,12,LEN(prgprg)+1,prgprg)
    i=thisform.text1.value
    SendMessagen(lnSendHwnd,EM_SETSEL,SendMessagen(lnSendHwnd,EM_LINEINDEX,i-1,0),SendMessagen(lnSendHwnd,EM_LINEINDEX,i,0))
#ELSE
    Declare Integer SendMessageW In WIN32API as SendMsgWc Integer,Integer,Integer,String
    Declare Integer SendMessageW In WIN32API as SendMsgWn Integer,Integer,Integer,Integer
    prgprg = Strconv(prgprg, 5)    && DBCS > UNICODE
    #define WM_SETTEXT    0x000C
    SendMsgWc(lnSendHwnd, WM_SETTEXT, 0, prgprg)
    i=thisform.text1.value
    SendMsgWn(lnSendHwnd, EM_SETSEL ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i-1,0) ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i,0) )

#ENDIF
ENDDEFINE


这家伙很懒,啥也没留下
2024-11-11 09:44
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
完美解决
2024-11-11 09:59
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
你建议改为按宽字符处理试试,我是一点头绪也没有,看到你的代码才豁然开朗,谢谢。
2024-11-11 10:11
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
我又测试了一下,发现只变动这一句也可以
    SendMsgWn(lnSendHwnd, EM_SETSEL ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i-1,0) ;
        , SendMsgWn(lnSendHwnd,EM_LINEINDEX,i,0) )
收到的鲜花
  • kangss2024-11-11 20:22 送鲜花  1朵   附言:确实不错
2024-11-11 10:22
iswith
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:454
专家分:611
注 册:2013-5-14
收藏
得分:0 
思路就是把Edit的超过ASCII字符全部去掉!以及不可见字符代码替换掉,手工处理何时才是头。。。。

[此贴子已经被作者于2024-11-13 23:15编辑过]

2024-11-13 23:13
kmyz_yyl
Rank: 2
等 级:论坛游民
帖 子:62
专家分:28
注 册:2012-11-13
收藏
得分:0 
可用filetostr和alines
2024-11-17 23:13
快速回复:请问如何正确选择记事本中的指定行?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.134239 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved