我正在尝试使用调试我的Chrome扩展程序
console.log("message");
Run Code Online (Sandbox Code Playgroud)
我的扩展工作正常(大多数情况下),我点击调用功能执行某些操作的按钮.每个函数都作为consloe.log()调试行.
如果我在镀铬加载后打开镀铬控制台(ctrl + shift + i),无论我做什么,它都会保持为空.Chrome已设置为开发者模式.
使用以下代码,我可以获得IPv4网站的内容:
uses
IdHttp;
IdHttp1 := TIdHttp.Create(nil);
try
Result := IdHttp1.Get('http://www.heise.de/')
finally
IdHttp1.Free;
end;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试连接到IPv6网站时,我收到套接字错误#11004:
IdHttp1 := TIdHttp.Create(nil);
try
Result := IdHttp1.Get('http://www.six.heise.de/')
finally
IdHttp1.Free;
end;
Run Code Online (Sandbox Code Playgroud)
我可以ping www.six.heise.de就好了(IP 2a02:2e0:3fe:100 :: 6 :)并且Firefox显示网站没有问题.
我需要在Indy(SVN的最新V10版本)中更改以连接到IPv4和IPv6网站吗?
我正在使用此Delphi 7代码来检测Internet Explorer是否正在运行:
function IERunning: Boolean;
begin
Result := FindWindow('IEFrame', NIL) > 0;
end;
Run Code Online (Sandbox Code Playgroud)
这适用于使用IE 8,9和10的99%的系统.
但是有一些系统(不幸的是我没有,但我有两个beta测试人员都有这样的系统,都是Win7 x64 SP1),其中FindWindow()为IEFrame返回0,即使IE在内存中也是如此.
所以我编写了另一种方法来查找窗口:
function IERunningEx: Boolean;
var WinHandle : HWND;
Name: array[0..255] of Char;
begin
Result := False; // assume no IE window is present
WinHandle := GetTopWindow(GetDesktopWindow);
while WinHandle <> 0 do // go thru the window list
begin
GetClassName(WinHandle, @Name[0], 255);
if (CompareText(string(Name), 'IEFrame') = 0) then
begin // IEFrame found
Result := True;
Exit;
end;
WinHandle := GetNextWindow(WinHandle, GW_HWNDNEXT);
end; …Run Code Online (Sandbox Code Playgroud) 我有一个特定的图标文件,它由PNG压缩图像组成,当我尝试加载它并添加到a时TImageList,Out of system resources会引发异常.
图标文件位于:https://www.dropbox.com/s/toll6jhlwv3cpq0/icon.ico?m
以下是代码,它使用常见类型的图标,但无法使用PNG图像图标:
procedure TForm1.Button1Click(Sender: TObject);
var
Icon: TIcon;
begin
try
Icon := TIcon.Create;
Icon.LoadFromFile('icon.ico');
ImageList1.AddIcon(Icon);
Caption := IntToStr(ImageList1.Count);
finally
Icon.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
为什么PNG图像图标格式无法加载Out of system resources异常?如何将这种图标添加到图像列表?
我在安装完成后以这种方式启动我的Windows应用程序:
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchApplication"
...
Function LaunchApplication
ExecShell "" "$INSTDIR\Application.exe"
FunctionEnd
Run Code Online (Sandbox Code Playgroud)
但这有一个奇怪的,不希望的副作用.显然是我的应用程序启动了管理员权限.
我无法在Web浏览器(使用Firefox和IE测试)和我的应用程序之间拖放任何数据.
如果我退出我的应用程序(会话从NSIS启动),并从开始菜单图标重新启动它一切正常! - 我可以毫无问题地拖放到浏览器.
所以我怀疑因为在安装开始时有一个UAC请求,不知何故UAC权限被转移到我在安装后启动的进程.由于浏览器在低安全性过程中运行,因此Windows拒绝使用它们(在使用NSIS启动的流程实例中)排除任何数据.
如何从NSIS启动exe,以便不会发生此UAC /安全问题?
在Chrome V27之前,您可以枚举Chrome子窗口控件以进入编辑字段并从那里读取字符串值以获取当前打开的URL.
不幸的是,除了主窗口(Chrome_WidgetWin_1)和网页标签(Chrome_RenderWidgetHostHWND)之外,Chrome 28已经切换到新的渲染引擎(Blink)并且不再使用Windows控件.
如果有人能指出从另一个(Win32)应用程序获取当前打开的Chrome URL的替代方法,我将不胜感激.
我需要在项目中添加一些图标作为资源(在这种情况下我不能使用TImageList,因为TCoolTrayIcon中存在错误,我无法快速替换组件).
我创建了一个icons.rc脚本,将两个ico文件添加到Delphi资源文件中:
redicon ICON "c:\icon\red.ico"
greenicon ICON "c:\icon\green.ico"
Run Code Online (Sandbox Code Playgroud)
它编译好了到icons.res,所以我把它添加到我的Delphi 7项目的第一个单元:
{$R icons.res}
Run Code Online (Sandbox Code Playgroud)
然后我将句柄存储在MainForm的OnCreate()中:
hRedIcon := LoadIcon(hInstance,'redicon');
hGreenIcon := LoadIcon(hInstance,'greenicon');
Run Code Online (Sandbox Code Playgroud)
然后使用手柄就好了.
现在问题 - 在这之后,项目选项中添加的项目图标(大小为16x16到48x48)被替换为{$ R icons.res}中添加的第一个图标(16x16 redicon).
怎么预防这个?如何在不替换项目选项 - >应用程序 - >加载图标中添加的图标的情况下,将其他图标作为资源添加到项目中?
我有几个URL在所有浏览器中都可以正常工作,但如果我尝试使用Indy Http客户端的Get()获取页面内容,则会返回错误代码500,内部服务器错误.这是最新的Indy SVN版本(4981).
这是我的示例代码.所需要的只是带有Indy组件的Delphi以及带有按钮和备忘录的表单.
procedure TForm1.Button1Click(Sender: TObject);
var HTTPCLIENT1: TIdHTTP;
begin
try
try
HTTPCLIENT1 := TIdHTTP.Create(nil);
Memo1.Clear;
with HTTPCLIENT1 do
begin
HandleRedirects := True;
Request.UserAgent := 'Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.7.3) Gecko/20040924 Epiphany/1.4.4 (Ubuntu)';
Memo1.Text := Get('http://www.laredoute.fr/vente-machine-a-coudre-bernette-20-kit-couture--garantie-2-ans.aspx?productid=401225048&documentid=999999&categoryid=22918417&customertarget=0&offertype=0&prodcolor=1#pos=33_n_n_n_n_n_n&numberpage=2');
Caption := ResponseText;
end;
except
On e: Exception do
begin
Memo1.Lines.Add('Exception: '+e.Message);
end;
end;
finally
HTTPCLIENT1.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
这不是我身边的连接问题,因为99%的URL返回200或404,只有少数返回500,但每个浏览器都会在一秒钟内打开它们.
我在过去几周内创建了新的EC2现场请求.为每个请求创建了一个新的安全组.删除现场请求后,安全组不会被删除.我已达到100组限制并想删除它们.EC2界面显然一次只允许删除一次,这意味着我必须进行300次点击才能删除这些组.或者是否有更好的方法来删除多个安全组,只需点击几下或代码行?
我正在将一个Delphi应用程序从Indy 9更新到Indy 10.
这很痛苦,显然已经发生了很多变化.
我陷入了困境.
这是旧代码(与Indy 9一起工作):
创建一个线程池,初始化然后启动池的每个线程.各个线程创建一个indy http客户端(但这并不重要).
TUrlThread = class(TIdThread)
...
var
i: Integer;
begin
// create the Pool and init it
Pool := TIdThreadMgrPool.Create(nil);
Pool.PoolSize := Options.RunningThreads;
Pool.ThreadClass:= TUrlThread;
// init threads and start them
for i := 1 to Options.RunningThreads do
begin
with (Pool.GetThread as TUrlThread) do
begin
Index := i;
Controler := Self;
Priority := Options.Priority;
Start;
end;
end;
Run Code Online (Sandbox Code Playgroud)
该TIdThreadMgrPool类旷古印10.
我寻找替代品,TIdSchedulerOfThreadPool看起来像赢家,但我无法让它运行.
这是修改后的(Indy 10)代码:
TUrlThread = class(TIdThreadWithTask)
...
var
i: Integer;
begin …Run Code Online (Sandbox Code Playgroud)