我编写了一个C DLL和一些C#代码来测试包含这个DLL并从中执行函数.我对这个过程并不太熟悉,每当从C#源代码调用DLL函数时,我都会收到PInvokeStackImbalance异常.代码如下(我已经评论了大多数代码来隔离这个问题):
C#包含代码:
using System;
using System.Runtime.InteropServices;
using System.IO;
namespace TestConsoleGrids
{
class Program
{
[DllImport("LibNonthreaded.dll", EntryPoint = "process")]
public unsafe static extern void process( long high, long low);
static void Main(string[] args)
{
System.Console.WriteLine("Starting program for 3x3 grid");
process( (long)0, (long)0 );
System.Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
C++ DLL函数代码
extern "C" __declspec(dllexport) void process( long high, long low );
void process( long high, long low )
{
// All code commented out
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio生成了dllmain代码(我不明白这个构造,所以我包括它)
// dllmain.cpp : Defines the …Run Code Online (Sandbox Code Playgroud) 我想要这样的东西:

此窗口不可调整大小,并在与其相关的系统托盘图标上方对齐.
我有这个:

这是可调整大小的,它可以在任何地方使用.如果单击Win 7中的音量控件,它将始终直接弹出图标上方.这是理想的.
我发现这个参考我认为试图解决同样的问题(虽然图像已经死了但无法判断),
但我正在使用WPF,我不知道如何从我的Window对象中获取它们引用的这些Form对象.这是我窗口的XAML声明:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Class="WirelessControl.Window1"
x:Name="Window"
Title="Window1"
Width="260" Height="370" mc:Ignorable="d" WindowStyle="None"></Window>
Run Code Online (Sandbox Code Playgroud)
我觉得基于Windows的常见程度,必须有一个相当简单的方法来实现这一点.
ResizeMode="NoResize" 导致我的窗口边框消失,所以没有帮助.
谢谢你们,我希望我足够全面.