小编sma*_*ins的帖子

如何从32位应用程序注册64位dll(在64位操作系统上)

我目前使用以下函数来注册处理上下文菜单调用的DLL.

function RegisterLibrary(szLibrary: String): Integer;
var
  hLib: THandle;
  drs: TDllRegisterServer;
begin
  // Attempt to load the library
  hLib := LoadLibrary(PChar(szLibrary));

  // Handle check
  if IsHandle(hLib) then
  begin // Get the register function
    @drs := GetProcAddress(hLib, LIB_REGISTER);

    if Assigned(@drs)
      then Result := drs            // Make the function call
      else Result := GetLastError;  // Return last error

    // Unload the library
    FreeLibrary(hLib);
  end else
    Result := GetLastError; // Return last error
end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,当尝试从我的32位应用程序注册64位dll时,它不起作用.

有没有办法从我的32位应用程序(用Delphi编译)注册我的64位dll(用free pascal编译)?

我想我可以调用C:\ Windows\system\regsvr32.exe"/ s"filename"但想知道我是否还有其他选择.

谢谢!

delphi 64-bit

3
推荐指数
1
解决办法
3953
查看次数

获取从NIC发送和接收的累积字节数

是否有任何简单的方法(通过一个脚本)来获取从Windows 2008 Server上的NIC发送和接收的累积字节?

例如,NIC当前显示大约18 MB的已发送数据和765 MB的已接收数据.

由于我的服务器提供商不提供查看每月带宽使用情况的简便方法,因此获取NIC数据似乎是最可靠的.

我知道我可以使用PRTG通过SNMP获取当前的使用数据,但它只是平均值,因为传感器每60秒检查一次.

networking windows-server-2008 prtg

2
推荐指数
1
解决办法
7864
查看次数

在设计时存储"记录数组"的最佳方式

我有一组数据需要在设计时存储,以便在运行时构造一组组件的内容.

像这样的东西:

type
  TVulnerabilityData = record
    Vulnerability: TVulnerability;
    Name: string;
    Description: string;
    ErrorMessage: string;
  end;
Run Code Online (Sandbox Code Playgroud)

在设计时存储这些数据以便以后在运行时检索的最佳方法是什么?我将有大约20条记录,我知道每条"记录"的所有内容,但我坚持认为存储数据的最佳方式.

我提出的唯一半优雅的想法是"构建"单元初始化的每条记录,如下所示:

var
  VulnerabilityData: array[Low(TVulnerability)..High(TVulnerability)] of TVulnerabilityData;

....

initialization
  VulnerabilityData[0].Vulnerability := vVulnerability1;
  VulnerabilityData[0].Name := 'Name of Vulnerability1';
  VulnerabilityData[0].Description := 'Description of Vulnerability1';
  VulnerabilityData[0].ErrorMessage := 'Error Message of Vulnerability1';

  VulnerabilityData[1]......
  .....
  VulnerabilityData[20]......
Run Code Online (Sandbox Code Playgroud)

是否有比这更好和/或更优雅的解决方案?

感谢您阅读以及您可能提供的任何见解.

delphi

2
推荐指数
1
解决办法
986
查看次数

如何使用TVirtualStringTree显示多行项目和"扩展"选择项?

我想创建一个类似下面的图像(我知道是使用TVirtualStringTree完成的),但我还没有找到任何关于如何实现此目的的示例代码.

任何人都知道如何在下面的示例中使用多行项目,并"展开"选择项目以显示更多行?

替代文字http://img687.imageshack.us/img687/6498/vtvexample.gif

delphi virtualtreeview

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

将函数转换为delphi 2009/2010(unicode)

我正在慢慢将现有代码转换为Delphi 2010,并阅读Embarcaedro网站上的几篇文章以及MarcoCantú白皮书.

还有一些我还没有理解的东西,所以这里有两个函数来举例说明我的问题:

function RemoveSpace(InStr: string): string;
var
  Ans     : string;
  I       : Word;
  L       : Word;
  TestChar: string[1];
begin
  Ans := '';
  L := Length(InStr);
  if L > 0 then
  begin
    for I := 1 to L do
    begin
      TestChar := Copy(InStr, I, 1);
      if TestChar <> ' ' then Ans := Ans + TestChar;
    end;
  end;
  RemoveSpace := Ans;
end;

function ReplaceStr(const S, Srch, Replace: string): string;
var
  I: Integer;
  Source: string;
begin
  Source := S;
  Result := …
Run Code Online (Sandbox Code Playgroud)

delphi unicode delphi-2009 delphi-2010

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

jQuery:是否可以将多个事件组合成一个.click()?

我有以下代码处理选项卡中的单击并通过ajax加载内容:

$(document).ready(function()
{
    $("#tab1").click(function()
    {
        loadTab($(this).attr("href") + "?ajax=1");
        return false; // cancel the event
    });

    $("#tab2").click(function()
    {
        loadTab($(this).attr("href") + "?ajax=1");
        return false; // cancel the event
    });

    $("#tab3").click(function()
    {
        loadTab($(this).attr("href") + "?ajax=1");
        return false; // cancel the event
    });

    $("#tab4").click(function()
    {
        loadTab($(this).attr("href") + "?ajax=1");
        return false; // cancel the event
    });
});
Run Code Online (Sandbox Code Playgroud)

您会注意到有很多重复的代码.

有没有办法将#tab1,#tab2,....分组为单个.click(function()?

jquery

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

帮我修一个计算注册表项目的Delphi函数

我有一个计算注册表项的函数,并添加了一个新选项来检索注册表项名称和值.不幸的是,我似乎无法理解为什么只检索每个注册表项的第一项以及为什么这些值都具有相同的名称.

有人看到下面的代码有任何明显的问题吗?

function CountRegistryItems(Root: HKEY; SubKey: string; var KeysCount: Integer;
  var ValuesCount: Integer; GetValues: Boolean; const List: TStrings): Boolean;
type
  TRegKeyInfo = record
    NumSubKeys: Integer;
    MaxSubKeyLen: Integer;
    NumValues: Integer;
    MaxValueLen: Integer;
    MaxDataLen: Integer;
    FileTime: TFileTime;
  end;

var
  Info: TRegKeyInfo;
  i: integer;
  SL: TStringList;
  Status: Integer;
  Key: HKEY;
  Len: DWORD;
  S: string;

  PartialKeysCount: Integer;
  PartialValuesCount: Integer;

  KeyType, MaxValLen, MaxValNameLen, ValNameLen, ValLen: Cardinal;
  ValName, Val: PChar;

  Size: DWORD;
  ValueName: string;
begin
  KeysCount := 0;
  ValuesCount := 0;
  Result := False;

  if GetValues …
Run Code Online (Sandbox Code Playgroud)

delphi

-1
推荐指数
1
解决办法
1030
查看次数