小编Ben*_*iss的帖子

从DNS获取IP地址而不使用GetHostByName

GetHostByName用来从主机/ DNS获取IP地址.我也有卡巴斯基互联网安全2013,并注意到它GetHostByName被它挑选.似乎我的进程试图在其中创建一个子键hklm\SYSTEM\CONTROLSET001\SERVICES\TCPIP\PARAMETERS.这实际上意味着,如果用户没有任何管理员权限,我就不能使用此功能.有没有其他方法来解决主机/ DNS?

编辑:这里有一个截图:

在此输入图像描述

编辑2:我实际上使用了getaddrinfo,KIS没有"检测到任何东西".我想使用它,但我仍然希望得到Win2K的支持.

EDIT3:添加了Debug ScreenShot

在此输入图像描述

编辑4:这是我的"测试"代码:

program Project2;

{$APPTYPE CONSOLE}

uses
  Winsock;

var
    DummyWSA : WSADATA;

begin
  if WSAStartup($0202, DummyWSA) = 0 then begin
    GetHostByName ('localhost');
  end;
  readln;
end.
Run Code Online (Sandbox Code Playgroud)

EDIT5:GetAddrInfo版本......

program Project2;

{$APPTYPE CONSOLE}

uses
  Winsock;

type
  PAddrInfo = ^TAddrInfo;
  TAddrInfo = packed record
    ai_flags: Integer;
    ai_family: Integer;
    ai_socktype: Integer;
    ai_protocol: Integer;
    ai_addrlen: LongWord;
    ai_canonname: Array of Char;
    ai_addr: PSOCKADDR;
    ai_next: PAddrInfo;
  end;

function getaddrinfo(const nodename: PChar; const servname : PChar; const …
Run Code Online (Sandbox Code Playgroud)

sockets delphi winapi winsock

12
推荐指数
1
解决办法
5113
查看次数

是否可以将VirtualStringTree用于主细节网格视图?

好吧,我在这里得到了一些非常棘手的东西...我想将一个或者使用Header给一个ChildNode.我认为这个想法是合理的,因为在子节点中有标题会让人看起来很棒,所以可以在表格中指定子节点.是否存在VST具有或根本不可能的功能?

谢谢你的帮助.

delphi delphi-7 virtualtreeview tvirtualstringtree

8
推荐指数
1
解决办法
3440
查看次数

获取文件系统限制

我想编写一个函数,告诉我是否可以将文件/文件夹写入特定路径.我想这样做而不实际将任何文件写入磁盘.是否有WINAPI函数?谢谢您的帮助.

windows delphi winapi delphi-7

8
推荐指数
2
解决办法
1010
查看次数

为什么MessageBox不会在同步线程上阻止应用程序?

据我了解并了解TThread类的方法,如果你同步你的代码,它实际上是在主应用程序线程中执行的(就像一个计时器/按钮点击/等).我一直在玩,并注意到MessageBox不会阻止主应用程序,但是睡眠就像预期的那样.这是为什么?

type
  TTestThread = class(TThread)
  private
    procedure SynchThread;
  protected
    procedure Execute; override;
  public
    constructor Create(CreateSuspended: Boolean);
  end;

procedure TTestThread.SynchThread;
begin
 MessageBoxA (0, 'Hello', 'Test', 0);
end;

procedure TTestThread.Execute;
begin
 Synchronize (SynchThread)
end;

constructor TTestThread.Create(CreateSuspended: Boolean);
begin
  inherited;
  FreeOnTerminate := True;
end;

procedure StartThread;
var
 TestThread : TTestThread;
begin
 TestThread := TTestThread.Create (FALSE);
end;
Run Code Online (Sandbox Code Playgroud)

delphi vcl tthread

8
推荐指数
2
解决办法
6294
查看次数

用Indy登录facebook

我想和Indy一起登录我的facebook账户.版本是9.00.10,我使用OpenSSL和TIDHTTP并为其分配了一个cookie管理器.一切正常(我可以发送POST请求GET等)

我嗅到实际登录到facebook,我有以下信息:

  • UserAgent:Mozilla/5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.2)Gecko/20100115 Firefox/3.6(.NET CLR 3.5.30729)

  • 有几个POST参数:

    • lsd =我不知道那是什么.
    • email =实际的Facebook用户名/电子邮件.
    • pass =密码(未加密) - >我很惊讶地看到明文.
    • default_persistent =(0或1)表示"让我登录"
    • timezone =时区代码.
    • lgnrnd =我不知道那是什么.
    • lgnjs =我不知道那是什么.
    • locale = GEOIP位置(ex en_US)

该帖子是在https://www.facebook.com/login.php?login_attempt=1上发布的.但是当我尝试登录时返回我输入的电子邮件不正确.我确定我使用了正确的电子邮件和密码.

这是我的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  TEST : STRING;
  lParamList: TStringList;
  i : Integer;
begin
  lParamList := TStringList.Create;
  lparamlist.Add('lsd=AVoBzJ5G');
  lparamlist.Add('email=myeMail%40mysite.com');
  lparamlist.Add('pass=mypass');
  lparamlist.Add('default_persistent=0');
  lparamlist.Add('timezone=240');
  lparamlist.Add('lgnrnd=210302_FeQV');
  lparamlist.Add('lgnjs=1367035381');
  lparamlist.Add('locale=en_US');
  IDHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';
  Test := IdHTTP1.Get('https://www.facebook.com'); // …
Run Code Online (Sandbox Code Playgroud)

delphi post facebook indy

8
推荐指数
1
解决办法
4430
查看次数

内存泄漏GETIPFROMHOST

我在这里有这个代码来从主机名中检索IP地址:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  winsock;

function GetIPFromHost(const HostName: string): string;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  i: Integer;
begin
  Result := '';
  phe := GetHostByName(PChar(HostName));
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  i := 0;
  while pPtr^[i] <> nil do
  begin
    Result := inet_ntoa(pptr^[i]^);
    Inc(i);
  end;
end;

var
wsaData: TWSAData;

begin

if (WSAStartup($0202, wsaData) <> 0) then begin
      Exit;
end;

while true do begin
sleep (1000);
GetIPFromHost …
Run Code Online (Sandbox Code Playgroud)

delphi memory-leaks winsock delphi-7 winsock2

7
推荐指数
1
解决办法
1066
查看次数

Windows UAC对话框

我有一个没有资源的应用程序(根本没有UAC清单).此应用程序使用CopyFile将自身安装到appdata/roaming文件夹.它还设置了一个自动启动,因此它会在每次启动时自动启动.现在每次启动电脑时,都会弹出UAC对话框并说应用程序会对电脑进行更改.如果它位于appdata中,它还在图标上有盾牌标志.如何删除图标中的对话框/屏蔽?Windows是否检测到copyfile API并自动设置它?

谢谢你的回答.

windows winapi uac

7
推荐指数
1
解决办法
733
查看次数

检测图片中的多个形状并计算中间

这个问题可以用任何类型的编程语言来解答,因为我想要一些算法帮助,但我更喜欢Delphi.我的任务是检测和计算随机图片的多个形状(1到N之间 - 大部分是圆形或Elipse)并计算它们的中间值并将它们作为图片的坐标返回.每个形状的中间可以有一个填充物(但没关系).形状彼此相距至少1个像素.所有形状都不会与图片的另一个或角落融为一体.图片的背景总是具有相同的背景颜色,实际上无关紧要,因为与背景相比,形状的边框/框架总是不同的颜色.这使得检测形状变得容易.我正在考虑按像素逐行扫描并收集坐标,然后围绕每个形状绘制一个不可见的矩形/正方形以计算中间值.然后我也听说过扫描线,但我认为在这种情况下它不会更快.所以我的问题是,我该如何计算:

  1. 图中有多少个形状.
  2. 如何计算(或多或少)它们的确切中间值.

一些图片可视化任务:

这是一张随机形状的图片(大多数是近圆圈)正如你所看到的,它们彼此分开很好.

图片中的形状

然后我可以很容易地绘制/计算每个形状周围的假想矩形/正方形,并计算它的中间: 图片中的形状有围绕它们的矩形/正方形

我有矩形/正方形后.我可以很容易地计算中间.我该如何开始?

PS.:我在mspaint中画了一些圆圈.我必须补充一点,所有形状都是CLOSED,这样就可以在图片中填充每个形状,没有任何问题!

谢谢您的帮助.

delphi pixel image-processing pixels shapes

6
推荐指数
1
解决办法
1894
查看次数

如何为尚不存在的节点显示虚拟树视图网格线?

我在Delphi 7中使用SoftGem的VirtualStringTree.

有没有办法启用完整的网格线(就像在TListView中一样)?我只能找到toShowHorzGridLines,它只显示当前节点的行,而不是下面空白空间中的任何内容,并且toShowVertGridLines只显示垂直线.

如何在添加项目之前在空白区域中显示它们?

delphi gridlines virtualtreeview

5
推荐指数
1
解决办法
2291
查看次数

分配一个字节数组,然后在delphi中释放它

我想用一个字节数组分配空间(动态大小)并得到一个指向"spacearea"的指针,如果我不再需要它,可以在以后释放它.

我了解VirtualAlloc,VirutalAllocEx和LocalAlloc.哪一个是最好的,如何在之后释放内存?

谢谢您的帮助.

delphi winapi memory-management delphi-7

5
推荐指数
2
解决办法
5185
查看次数