Delphi中设置Combobox下拉项的宽度

作者: 傻猫    分类: 搞软件     发布时间: 09-29 15:53    浏览次数: 345     无留言

delphi XE10 给程序添加UAC权限

作者: 傻猫    分类: 搞软件     发布时间: 09-27 12:05    浏览次数: 523     2 条留言

delphi chrome cef3 控件学习笔记 (五)

作者: 傻猫    分类: 搞软件     发布时间: 09-20 18:50    浏览次数: 446     无留言

一、模拟移动鼠标

//  SetCursorPos(StrToInt(Edit1.Text),StrToInt(Edit2.Text));  //相对屏幕位置
  SetCursorPos(Self.Left+chrm1.Left+strtoint(Edit1.Text),Self.Top+chrm1.Top+strtoint(Edit2.Text));  //相对Chrm位置

    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模拟按下鼠标左键。
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//模拟放开鼠标左键。
  keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); //按下SHIFT键。
  keybd_event(0x52,MapVirtualKey(0x52,0),0,0);//按下R键。
  keybd_event(0x52,MapVirtualKey(0x52,0),KEYEVENTF_KEYUP,0);//放开R键。
  keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0);//放开SHIFT键。

查看更多内容...

delphi chrome cef3 控件学习笔记 (四)

作者: 傻猫    分类: 搞软件     发布时间: 09-20 18:49    浏览次数: 455     无留言

一、遍历网页元素并点击JS:

下面代码为找到淘宝宝贝页面,成交记录元素的代码:

for(var i=0;i<document.getElementsByTagName("A").length;i++){var a;
       var d=document.getElementsByTagName("A")[i];
       var s=document.getElementsByTagName("A")[i].innerHTML;
       if(s!=null){
       if(s.indexOf("成交记录")>-1){
            a=document.getElementsByTagName("A")[i];alert(a.innerHTML);
           ClickElement(a);  //由于chromium控件元素不支持click事件,所以需要自己重新绑定事件

           break;
       }}}

查看更多内容...

delphi chrome cef3 控件学习笔记 (三)

作者: 傻猫    分类: 搞软件     发布时间: 09-20 18:46    浏览次数: 413     无留言

Delphi与JS的交互问题:

一、执行简单的JS
上一篇已经讲过:
chrm1.browser.MainFrame.ExecuteJavaScript('alert("abc");','about:blank',0);
chrm1.browser.MainFrame.ExecuteJavaScript('function aaa(){alert("abc");}aaa();','about:blank',0);

二、注入自定义的JS
首先必须在网页加载完成之后,才可以执行,不能为空页面!
str_js := 'var oScript = document.createElement( "script" );oScript.id = "sid";alert(oScript.id);';
chrm1.browser.MainFrame.ExecuteJavaScript(str_js,'about:blank',0);

查看更多内容...

delphi chrome cef3 控件学习笔记 (二)

作者: 傻猫    分类: 搞软件     发布时间: 09-20 18:42    浏览次数: 449     无留言

用Tchromium替换webbrowser

  用惯了EmbeddedWB,不想换,但是IE内核一直存在内存泄漏问题,没办法,只有寻找替代品了。

  要把用习惯的EmbeddedWB换成完全不一样的TChromium,有点挑战,特别是在资料不多,英语没过三级的情况下。未来趋势是这样,只有慢慢啃了。

  首先,想到的是跨域,如果不能跨域,就没办法替代手上的成品。TChromium的跨域比想像中的简单,直接通过chrm.Browser.GetFrameNames(list);//list:tstringList;取得各个IFrame/Frame的名称(所谓名称不是指name属性,只是一个标识,在有name时,返回name,没有name时,ID 也行,都没有时,自动生成一个唯一名称),如:ff //这个是一个框架的ID

查看更多内容...

delphi chrome cef3 控件学习笔记 (一)

作者: 傻猫    分类: 搞软件     发布时间: 09-20 18:39    浏览次数: 432     无留言

CEF简介: 
   嵌入式Chromium框架(简称CEF) 是一个由Marshall Greenblatt在2008建立的开源项目,它主要目的是开发一个基于Google Chromium的Webbrowser控件。CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去。

  它的设计思想政治就是易用且兼顾性能。CEF基本的框架包含C/C++程序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,javascript对象以及javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等,并且可以跟Google Chrome浏览器一起,支持高性能和Html5 技术,这段代码你可以在[test]文件夹下面的cefclient工程里面看到。

查看更多内容...

chromium中的URL加载过程解析

作者: 傻猫    分类: 搞软件     发布时间: 09-20 15:54    浏览次数: 407     无留言

chromium内核代码一直在更新,最近又有了大动作。尤其是IPC通信部分,因为性能问题,传统的IPC已经被弃用,虽然不是完全舍弃,但除了严重依赖于时序关系的Navigate相关消息外,其他的所有IPC::Channel都被替换成了mojom。这就导致以前的FrameMsg_Navigate、ResourceHostMsg_RequestSource等IPC消息在chromium代码中不再可见了。因为大体的流程没有改变,有兴趣的可以回顾一下老罗的文章,这里只是从头梳理一下chromium69版本内核代码加载一个url的整个过程,以及该过程中涉及到的一些重要的类和方法。

查看更多内容...

在dcef3当中执行js代码并获得返回值

作者: 傻猫    分类: 搞软件     发布时间: 09-20 15:40    浏览次数: 402     无留言

1、如何在dcef3当中执行js代码

procedure TForm1.btnWriteZMClick(Sender: TObject);
var
  js: string;
begin
  js := 'document.getElementById(''login_button'').click();';    //获得ID为"login_button"并点击
  crm.Browser.MainFrame.ExecuteJavaScript(js, 'about:blank', 0);   //执行js
end;

查看更多内容...

生成Mac icns与Windows ico

作者: 傻猫    分类: 搞软件     发布时间: 09-16 11:28    浏览次数: 348     无留言

场景:在开发软件时候,出现要mac平台和windows平台下分别要相应格式的图标.而且是点击打开该icon文件后里面是合成了多个尺寸的“列表”图的集合。

以下以insong.png为例生成insong.icns以及insong.ico.
注:由于笔者是Mac系统的程序员一枚,在解决这个问题的时候,搜索了不少方案,尤其是生成windows的icn格式那折腾了较久。故留此足迹,以后备忘。

查看更多内容...