小编Hei*_*cht的帖子

跨进程发送图像的最有效方法

目标

将一个过程生成的图像高效且高速地传递到另一个过程.这两个进程在同一台计算机上运行,​​并在同一桌面上运行.操作系统可能是WinXP,Vista和Win7.

详细说明

第一个过程仅用于控制与产生图像的设备的通信.这些图像大小约为500x300px,每秒可更新数百次.第二个过程需要这些图像来处理它们.第一个过程使用第三方API将图像从设备绘制到HDC.这个HDC必须由我提供.

注意:两个进程之间已建立连接.它们通过匿名管道进行通信并共享内存映射文件视图.

思考

如何以尽可能少的工作实现这一目标?我的意思是既为计算机工作又为我工作(当然;)).我正在使用Delphi,所以也许有一些组件可用于这样做?我想我总是可以绘制到任何图像组件的HDC,将内容保存到内存流,通过内存映射文件复制内容,在另一侧解压缩并将其绘制到目标HDC.我还读到了一个可用于编组图像的IPicture界面.我需要尽可能快,所以开销越小越好.我不希望仅通过复制一些图像来强调机器.

你有什么想法?我很欣赏这一切!

windows delphi ipc image marshalling

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

在不同进程之间共享HDC

我正在编写某种IPC功能,需要将某些资源从一个进程传递到另一个进程.这适用于Pipe handle等,可以通过DuplicateHandle复制.现在我需要将HDC从一个进程传递到另一个进程.这甚至可能吗?如果是的话:怎么样?

子问题:我假设从一个进程到另一个进程的窗口句柄(HWND)是安全的.这个假设是否正确?

windows winapi ipc hdc

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

使用USB转并口适配器时,是否可以正常访问并口?

初步的故事

有这个程序使用并行端口与其他硬件同步.它将并行端口输出设置为指定的(字节)值.使用PC的内置并行端口时,这没有问题.目标平台是Windows XP到7,到目前为止一切正常.源代码在Delphi中,可访问且可以修改.

这个怎么运作

在Delphi中,我可以使用io.dll来设置并行端口的值,但也有其他可用的解决方案,如inpout32.dllport.dll.我打电话PortOut,指定一个端口号和字节值,并设置端口.

我现在想做什么 - 以及我需要帮助的地方

现在改变:这需要在没有内置并行端口的机器上工作(甚至不在主板上).有几种选择:

  • 使用USB转并口适配器将LPT端口添加到PC
  • 使用PCI卡,为PC添加LPT端口
  • 使用PCI Express卡,为PC添加LPT端口

我目前正在前往并专注于最简单和最便宜的可能性:USB转并口适配器.

主要问题

并行端口适配器之间似乎存在差异,这些适配器仅用于连接打印机和其他似乎更强大的适配器.真的有区别吗?或者我可以使用这5个$打印机适配器中的一个,插入我自己的硬件并从Delphi代码访问端口?或者我需要一个特殊的适配器?有没有人经历过这个?还有一个相关的问题在这里,但不同的适配器类型(如果存在的话)不存在提及.此页面表明确实存在差异:

与可以仅连接到打印机的所有其他USB并行端口相反,这可以连接到大多数硬件.

我希望通过USB存在解决方案,因为这样您就不必打开PC,这意味着可以按需添加适配器.

子问题

您是否有使用PCI(Express)解决方案的经验?如果USB方法不成功,我必须使用一个.

windows delphi usb delphi-2009 parallel-port

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

一套内存布局

setDelphi中的内存是如何组织的?

我尝试做的是将简单类型转换为类似的集合类型

var
  MyNumber : Word;
  ShiftState : TShiftState;
begin
  MyNumber:=42;
  ShiftState:=TShiftState(MyNumber);
end;
Run Code Online (Sandbox Code Playgroud)

德尔福(2009)不允许这样做,我不明白为什么.如果我得到一个数字,其中单个位编码不同的枚举值,那么这将使我的生活变得更容易,我可以像这样投射它.可以这样做吗?

我打算采用的一种方法是:

var
  ShiftState : TShiftState;
  MyNumber : Word absolute ShiftState;
begin
  MyNumber:=42;
end;
Run Code Online (Sandbox Code Playgroud)

但在此之前,我想我会要求内存布局.这是一种感觉,而不是知道我现在对此有何看法.

delphi casting set delphi-2009

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

无法使用RestSharp发送cookie

我一直试图使用几种不同的方法在Windows Phone上访问基于REST的API,但我似乎遇到了将cookie附加到请求中的问题.我已经尝试过这种WebClient方法(现在似乎已经标记为SecurityCritical,因此您不能再继承它并添加代码).我简要地看了一下HttpWebRequest,看起来很麻烦.

现在我正在使用RestSharp,它似乎可以使用,但我仍然遇到问题,我的cookie没有被添加到请求发送时.

我的代码如下:

// ... some additional support vars ...
private RestClient client;

public ClassName() {
    client = new RestClient();
    client.BaseUrl = this.baseAddress.Scheme + "://" + baseAddress.DnsSafeHost;
}

public void GetAlbumList()
{
    Debug.WriteLine("Init GetAlbumList()");

    if (this.previousAuthToken == null || this.previousAuthToken.Length == 0) 
    {
        throw new MissingAuthTokenException();
    }

    RestRequest request = new RestRequest(this.baseUrl, Method.GET);

    // Debug prints the correct key and value, but it doesnt seem to be included
    // when I run the request
    Debug.WriteLine("Adding …
Run Code Online (Sandbox Code Playgroud)

.net c# windows-phone-7 restsharp

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

Visual Studio 2010中的两个构建操作"资源"和"嵌入式资源"之间有什么区别?

我已经阅读了以下文章,该文章应该解释它,但它对我没有帮助:

http://msdn.microsoft.com/en-us/library/ht9h2dk8(VS.80).aspx

我的情况是我想要一个包含数百个图标的dll.图标dll将在各种应用程序中共享和使用.显然,如果一个应用程序只使用数十个,我不希望所有这些图标都加载到内存中.所以我很想知道"资源"(构建操作)是否允许我按需加载图标而不是一次加载所有图标.

有人可以帮忙吗?

visual-studio-2010 silverlight-4.0 windows-phone-7

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

哪些列表可以作为临时列表?

处理列表仅用作临时容器的项目列表时- 您建议我使用哪些列表类型?

一世

  • 不想手动销毁列表
  • 想使用内置列表类型(没有框架,库,......)
  • 想要仿制药

能够在不造成泄漏的情况下实现这一目标:

function GetListWithItems: ISomeList;
begin
  Result := TSomeList.Create;
  // add items to list
end;

var
  Item: TSomeType;
begin
  for Item in GetListWithItems do
  begin
    // do something
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我有什么选择?这是关于德尔福2009年,但为了知识,请提及2010年以上是否有这方面的新内容.

delphi list delphi-2009

7
推荐指数
3
解决办法
456
查看次数

您如何命名和组织例外?

在引入新的异常类型时,我总是不确定如何正确地执行此操作.有共同的约定吗?你怎么做呢?

我对你组织它们的范围感兴趣(将它们保存在它们所使用的单元中?在组件级别上有一个单元吗?包级别?应用程序?)

这也会影响命名.你包括多少背景?是否更好地使它们非常具体(如EPersonIDNotFoundError)或尝试使它们可重用(如ENotFoundError)?

后缀"错误"怎么样 - 什么时候应该添加它并何时离开呢?我无法看到例如以下的逻辑Classes.pas:

  EWriteError = class(EFilerError);
  EClassNotFound = class(EFilerError);
  EResNotFound = class(Exception);
Run Code Online (Sandbox Code Playgroud)

delphi coding-style exception

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

如何从内置日历应用程序隐藏我的应用程序日历?

我的应用需要内部日历.我可以像这样创建一个新日历:

var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);
var cacheCalendar = await store.CreateAppointmentCalendarAsync("unique name here");
Run Code Online (Sandbox Code Playgroud)

这成功了,我得到了一个新日历.但是这个日历在手机的内置日历应用程序中可见.我不希望这个日历可见,因为它是内部簿记.

所以我试着像这样隐藏日历:

var store = await AppointmentManager.RequestStoreAsync(AppointmentStoreAccessType.AppCalendarsReadWrite);
var cacheCalendar = await store.CreateAppointmentCalendarAsync("unique name here");
cacheCalendar.IsHidden = true; // <---- make calendar hidden
await cacheCalendar.SaveAsync(); // <---- save; error here
Run Code Online (Sandbox Code Playgroud)

在调用时SaveAsync我得到以下异常:

访问被拒绝.(HRESULT异常:0x80070005(E_ACCESSDENIED))"

为什么我无法在内置手机日历应用程序中隐藏我的日历?这是一个无证件限制吗?还有其他方法吗?

(注意:我在Windows 10 Mobile以及桌面Win 10上测试了这个 - 同样的错误.)

编辑/添加:由于Anthony发现该IsHidden属性在MSDN中被记录为只读,因此Visual Studio中的屏幕截图显示了公共setter(使其编译,运行并且看似合法的调用):

IsHidden属性有setter

(该应用程序针对的是Win 10 Build 10586 - 也许它是新的,但尚未完成?)

windows-10 windows-10-mobile uwp windows-10-universal uwp-xaml

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

.NET Core:如果在 Windows 上运行,如何访问 Windows 凭据管理器(否则忽略)?

到目前为止,为了在 .NET 应用程序中存储和检索机密(如凭据),我成功地在 Windows 上使用了CredentialManagement包。现在我想跨平台。

因此,我需要从 .NET Core 跨平台应用程序访问Windows 凭据管理器。如果它在 Windows 上运行 - 使用凭据管理器。如果它在 Linux 上运行 - 不要崩溃(使用钥匙链或其他东西,这是下一步)。

这将如何完成?

(注意:我对 Windows 凭据管理器的替代方案持开放态度,但它们应该提供同等级别的保护。)

.net c# credential-manager .net-core

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