找回密码
 加入
搜索
楼主: sanmoking

[GUI管理] au3的gui如何接受浏览器拖放过来的链接地址【已解决】

 火... [复制链接]
发表于 2012-5-2 00:17:49 | 显示全部楼层
回复 11# happytc


    我能说我重来没用过$WS_EX_TOPMOST吗?惭愧那
发表于 2012-5-2 10:30:16 | 显示全部楼层
学习了 谢谢分享
 楼主| 发表于 2012-5-2 10:54:38 | 显示全部楼层
回复 9# lanfengc


    如果是非ie浏览器就没有用了,比如谷歌火狐什么的。。
发表于 2012-5-2 11:06:40 | 显示全部楼层
回复 18# sanmoking


   嗯 。看 了下下面的代码。 用富文本框的那个很棒
发表于 2012-5-2 17:47:38 | 显示全部楼层
回复 13# zldfsz


    大师的  画彩虹  跟  录制 结合用上了
发表于 2012-5-2 21:25:00 | 显示全部楼层
这个mark一下,,以前也想过这个问题。。
发表于 2012-5-2 23:25:29 | 显示全部楼层
回复 16# 502762378


    这个有啥,不需要的时候,用它干嘛呢,需要时才会用到
发表于 2012-5-3 10:26:28 | 显示全部楼层
类似音速启动里的那个的功能???
发表于 2012-5-3 16:06:14 | 显示全部楼层
...富文本框会自动换行,不好,还没研究不自动换行的参数,另外富文本框图片、文字什么的我一选都能拖入,不好,我只需要超链接。框里已经有内容的,我在拖入新的进去需要替换掉旧的,要求不能共存 ...
sanmoking 发表于 2012-5-1 01:57

研究了大半天,基本上符合要求了。
本来想用注册消息来判断拖入和释放左键事件的,无赖对注册消息不了解,搞不下去,最终放弃了,大家有兴趣研究研究,研究出来了贴出来学习学习。
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
Opt("GUIOnEventMode", 1)
 Local $dat="",$m=0
$hGui = GUICreate("网址拖放测试", 330, 100, -1, -1, -1, $WS_EX_WINDOWEDGE + $WS_EX_TOPMOST)
GUISetOnEvent($GUI_EVENT_CLOSE, "ExitGui")
GUICtrlCreateLabel("网址:", 5, 45,40,20)
GUICtrlCreateButton("解析", 260, 35,60,25)
GUIctrlSetOnEvent($GUI_EVENT_CLOSE, "click")
$RichEdit = _GUICtrlRichEdit_Create($hGui, "", 40, 40, 200, 20, BitOR($ES_WANTRETURN, $ES_AUTOHSCROLL))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW, $hGui)
While True
        $a = GUIGetCursorInfo($hGui)
        If $a[0]>20 And $a[0]<570 And $a[1]>40 And $a[1]<60 And MouseGetCursor()=0 Then
                _GUICtrlRichEdit_SetText($RichEdit,"")
        EndIf
        Sleep(50)
                
WEnd
 
Func ExitGui()
    _GUICtrlRichEdit_Destroy($RichEdit)
    Exit
EndFunc
Func click()
$dat=_GUICtrlRichEdit_GetText($RichEdit)
If StringRegExp($dat,'http://wenku.baidu.com/view/(.*).html') Then
        MsgBox(4096,"网址为",$dat)
Else
        MsgBox(4096,"错误","不是百度文库网址,请重新拖入百度文库链接")
        EndIf
EndFunc

评分

参与人数 1金钱 +22 收起 理由
sanmoking + 22 不错给了我很清晰的思路,我修改了一下,大 ...

查看全部评分

 楼主| 发表于 2012-5-3 17:27:51 | 显示全部楼层
24楼大师的代码给了我前进的动力。不过试用了一下,发现不很稳定,用户手动输入的时候鼠标还放在书库框范围就没法输进去。。。
我稍微修改了一下,改成输入框内容识别。。。不过可能及特殊的情况我没有考虑到。希望大家帮忙测试测试各种极品组合的拖动输入粘贴删除什么的会不会不正常。谢谢了。


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiRichEdit.au3>
Opt("GUIOnEventMode", 1)
Local $dat = "", $m = 0
$hGui = GUICreate("网址拖放测试", 830, 100, -1, -1, -1, $WS_EX_WINDOWEDGE + $WS_EX_TOPMOST)
GUISetOnEvent($GUI_EVENT_CLOSE, "ExitGui")
GUICtrlCreateLabel("网址:", 5, 45, 40, 20)
GUICtrlCreateButton("解析", 760, 35, 60, 25)
GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "click")
$RichEdit = _GUICtrlRichEdit_Create($hGui, "", 40, 40, 700, 20, BitOR($ES_WANTRETURN, $ES_AUTOHSCROLL))
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW, $hGui)
$x1 = ""


While True
        $x2 = _GUICtrlRichEdit_GetText($RichEdit)
        If StringLen($x2) > 0 And $x1 = "" Then
                $x1 = $x2
        ElseIf StringLen($x2) - StringLen($x1) = 1 Or StringLen($x1) - StringLen($x2) > 1 Then
                $x1 = $x2                
        ElseIf StringLen($x2) - StringLen($x1) > 1 And $x1 <> "" Then
                If StringRight($x2, StringLen($x1)) = $x1 Then
                        $x1 = StringTrimRight($x2,StringLen($x1))
                        _GUICtrlRichEdit_SetText($RichEdit,$x1)                                
                Else
                For $ccccccc = StringLen($x1) To 1  Step -1
                        If StringLeft($x2, $ccccccc) & StringRight($x2, StringLen($x1) - $ccccccc) = $x1 Then
                                $x1 = StringTrimRight(StringTrimLeft($x2, $ccccccc), StringLen($x1) - $ccccccc)
                                _GUICtrlRichEdit_SetText($RichEdit,$x1)                                
                                ExitLoop
                        EndIf
                Next
                EndIf        
        Else
                $x1 = $x2
        EndIf
        Sleep(5)
WEnd

Func ExitGui()
        _GUICtrlRichEdit_Destroy($RichEdit)
        Exit
EndFunc   ;==>ExitGui
Func click()
        $dat = _GUICtrlRichEdit_GetText($RichEdit)
                MsgBox(4096, "网址为", $dat)
EndFunc   ;==>click

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
zldfsz + 20 + 2

查看全部评分

发表于 2012-5-3 18:27:07 | 显示全部楼层
回复 25# sanmoking

我只顾拖链接,竟然没考虑到手动输入情况就以为大功告成了,谢谢指点。
代码测试了,没发现问题,很不错!
发表于 2012-5-3 20:32:06 | 显示全部楼层
回复 1# sanmoking

"11楼【happytc】的代码,是比较接近我想要的,不过一般这种拖入链接最好用input,富文本框会自动换行,不好,还没研究不自动换行的参数,另外富文本框图片、文字什么的我一选都能拖入,不好,我只需要超链接。框里已经有内容的,我在拖入新的进去需要替换掉旧的,要求不能共存。。。"


我说老大,你仔细研究我在12#给的链接,你提这些都可以实现的。并且也不是很麻烦呀……

像你说的自动换行,你在富文本控件中加个横向滚动条不就解决了
$RichEdit = _GUICtrlRichEdit_Create($hGui, "", 20, 40, 200, 200, BitOR($ES_WANTRETURN, $ES_MULTILINE, $WS_VSCROLL, $WS_HSCROLL))
发表于 2012-5-3 20:48:35 | 显示全部楼层
本帖最后由 zldfsz 于 2012-5-3 13:07 编辑
...像你说的自动换行,你在富文本控件中加个横向滚动条不就解决了 ...
happytc 发表于 2012-5-3 12:32


&#160;可能楼上并不了解楼主要这个功能的作用,楼主是想要单行输入框效果+拖放网址功能,所以加个横向滚动条就难看了。所以控件样式改为$ES_AUTOHSCROLL就可以了

评分

参与人数 1金钱 +22 贡献 +5 收起 理由
sanmoking + 22 + 5 太了解我了。

查看全部评分

 楼主| 发表于 2012-5-3 21:18:45 | 显示全部楼层
本帖最后由 sanmoking 于 2012-5-3 21:21 编辑
可能楼上并不了解楼主要这个功能的作用,楼主是想要单行输入框效果+拖放网址功能,所以加个横向滚 ...
zldfsz 发表于 2012-5-3 20:48


大师深知我心,回头喝酒。。。。,好吧,罪过罪过。。
现在替换文本的功能还不完美,我已经发现25楼有一种情况下会出现问题,
比如输入框已有内容为:【http://ww.baidu.com/1111111.html】,
我在【11111】和【.html】之间拖入了一个新网址【http://ww.baidu.com/222222.html】,
变成【http://ww.baidu.com/1111111.http://ww.baidu.com/222222.htmlhtml】,
然后根据我设定的过滤代码,最后结果是【tp://ww.baidu.com/222222.htmlht】,不信试试。


类似这个情况的在比如【http://ww.baidu.com/1111111?u=http://ww.baidu.com/wenku.html】
我在【u=】之后插入了新的网址【http://ww.baidu.com/222222.html】,
结果就是【222222.htmlhttp://ww.baidu.com】,
各位可以帮忙重新写一下那个过滤代码,谢谢,我真实没办法了。。。


也就是说新插入的网址前缀若干字符正好等于之前位置的字符的话就会出现问题,,,
 楼主| 发表于 2012-5-3 21:55:02 | 显示全部楼层
我在想获取键盘输入时闪动符号的位置应该可以解决问题,但是暂时没找到那个函数。。正在翻帮助。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-24 23:19 , Processed in 0.087094 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表