小编Jer*_*non的帖子

德尔福dll出口记录

任何人都可以告诉我是否可以从dll导出记录?如果是,那该怎么办呢?

我的记录看起来像:

variables = record
      name : string;
      units : string;
      value : double;
end;
Run Code Online (Sandbox Code Playgroud)

delphi dll record dllexport

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

在Windows 7上枚举Delphi 2007中的终端服务会话

我正在使用QWINSTA.EXE从我们网络上的终端服务器获取会话/用户列表(我的计算机是Windows 7 Pro,TS是Windows Server 2003).我将此函数的输出传递给文本文件,然后处理文本文件以获取我需要的信息.如果有更好的方法,请原谅并跳过我冗长的帖子并指出我正确的方向.

我的问题是,无论是ShellExecute()也不ShellExecuteEx()让我即使执行程序,而不必首先提升权限.如果您转到未提升的命令提示符,您甚至不会在目录列表中看到EXE(也没有隐藏属性).使用"以管理员身份运行"命令提示符,您可以正常查看/使用它.无论如何,您都可以从Windows资源管理器中看到它.

我戳了一下,发现了这个gem:RunFileAsAdminWait()如果我尝试直接调用QWINSTA.EXE(它失败并显示错误消息:),则无效System Error. Code: 2. The system cannot find the file specified..如果我将所有内容都包装到批处理文件中并RunFileAsAdminWait()在批处理文件上使用,那么它似乎工作正常.

我知道,但没有用过,WTSEnumerateSessions().除了刚刚链接到的MSDN链接之外,我还没有找到关于它的更多信息.有人知道从Delphi使用该API的大量参考代码吗?它在Delphi 2007的Windows单元中不可用.

问题:

  1. 是否有另一种/更好的方法来执行需要管理员权限甚至访问的EXE?或者甚至是这里发生了什么?

  2. 有没有更好的方法来获取终端服务器上的活动会话列表,尤其是不需要提升权限的会话列表?

  3. 如果我坚持使用这种方法,我是以"正确的方式"做到的吗?

感谢您提供的任何帮助!

delphi delphi-2007 terminal-services windows-7

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

释放动态变体数组的最佳/首选方法是什么?

例如,如果我有以下内容:

type
  TVArray = array of array of Variant;
var
  MyArray : TVArray;
Run Code Online (Sandbox Code Playgroud)

然后我将一堆元素添加到MyArray中,使其具有1000个数组,每个数组包含30个变体.

如果我想立即执行此操作,释放该内存的最佳或首选方法是什么?

MyArray := nil;
Run Code Online (Sandbox Code Playgroud)

要么

SetLength(MyArray, 0);
Run Code Online (Sandbox Code Playgroud)

要么

Finalize(MyArray);
Run Code Online (Sandbox Code Playgroud)

或者我是否需要先对子阵列做些什么?各个变体包含哪些内容?

delphi variant dynamic-arrays

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