可能重复:
如何以编程方式确定我的工作站是否已锁定?
确定桌面是否为当前登录用户锁定的最佳方法是什么?我查看了MSDN,找不到任何API调用来检测它.我错过了什么,或者我可以使用没有简单的电话?
我有一个1x1的源位图,我试图拍摄该图像并将其绘制到一个新的位图.源位图全部为红色,但由于某种原因,新位图以渐变结束(参见图像).使用下面的代码,新的位图不应该是完全红色的吗?从哪里获得白色/ alpha?
alt text http://www.binaryfortress.com/Temp/Error.jpg
private void DrawImage()
{
Bitmap bmpSOURCE = new Bitmap(1, 1, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmpSOURCE))
{
g.Clear(Color.Red);
}
Bitmap bmpTest = new Bitmap(300, 100, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmpTest))
{
g.CompositingMode = CompositingMode.SourceCopy;
g.CompositingQuality = CompositingQuality.AssumeLinear;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.PageUnit = GraphicsUnit.Pixel;
g.PixelOffsetMode = PixelOffsetMode.None;
g.SmoothingMode = SmoothingMode.None;
Rectangle rectDest = new Rectangle(0, 0, bmpTest.Width, bmpTest.Height);
Rectangle rectSource = new Rectangle(0, 0, 1, 1);
g.DrawImage(bmpSOURCE, rectDest, rectSource, GraphicsUnit.Pixel);
}
pictureBox1.Image = bmpTest;
}
Run Code Online (Sandbox Code Playgroud) 我像这样使用GetWindowLong:
[DllImport("user32.dll")]
private static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);
Run Code Online (Sandbox Code Playgroud)
但根据MSDN文档,我应该使用GetWindowLongPtr与64位兼容. http://msdn.microsoft.com/en-us/library/ms633584(VS.85).aspx
GetWindowLongPtr的MSDN文档说我应该像这样定义它(在C++中):
LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex);
Run Code Online (Sandbox Code Playgroud)
我曾经使用IntPtr作为返回类型,但是我将使用什么来替代LONG_PTR?我也看到在C#中将GetWindowLong定义为:
[DllImport("user32.dll")]
private static extern long GetWindowLong(IntPtr hWnd, int nIndex);
Run Code Online (Sandbox Code Playgroud)
什么是正确的,我如何确保正确的64位兼容性?
我是Delphi新手,但我正在尝试使用Spy ++理解TApplication和TfrmMain窗口之间的关系.看起来TfrmMain窗口是具有正确屏幕坐标的真实窗口,但TApplication窗口是Windows任务栏中显示的窗口.而且,它们似乎根本没有相互关联.一个不是另一个的父窗口,那么窗口如何链接在一起?为什么非UI窗口是获取Windows任务栏按钮的窗口?任何Delphi专家都可以帮我理解这个吗?
我正在对一些大类库进行代码审查,我想知道是否有人知道一种简单易行的方法来生成所有方法(也可能是属性/变量)及其访问修饰符的列表.例如,我想要这样的事情:
private MyClass.Method1()
internal MyClass.Method2()
public MyOtherClass.Method1()
Run Code Online (Sandbox Code Playgroud)
有点像C++头文件,但对于C#.这会将所有内容放在一个地方以便快速查看,然后我们可以调查是否真的需要将某些方法标记为内部/公共.
哪个是在.NET中处理事件的首选/推荐方式:
this.Load += new EventHandler(Form1_Load);
private void Form1_Load(object sender, EventArgs e)
{ }
Run Code Online (Sandbox Code Playgroud)
要么
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
Run Code Online (Sandbox Code Playgroud)
每种方法的优缺点是什么?多年来我一直使用这两种方法,并且通常更倾向于第一种方法,因为这是Visual Studio自动创建的用于处理事件的方法.我错过的第二种方法有什么好处吗?
我有一个只有一个项目的解决方案,大约有30个类文件.如果我使用"查找和替换"来搜索当前打开的文档,它会很快,但如果我尝试搜索整个解决方案,则每个结果之间似乎需要3-4秒.即使我可以看到彼此相邻的比赛,仍然有3-4秒的滞后.硬盘驱动器没有做任何事情,CPU处于空闲状态 - 可能导致这种失速?
我有一个试图在循环中重定向的Web应用程序,Firefox告诉我它正在停止,因为请求永远不会完成.有没有一种好的方法(在Firefox中)看到在这个永无止境的循环中请求了什么URL?地址似乎没有出现在地址栏中.是否有任何插件可以帮助解决这个问题?
我正在使用此代码获得"未终止的字符串文字" Javascript错误:
var test = '<script type="text/javascript">var s = document.createElement(\'SCRIPT\');</script></div>';
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我正在逃避单引号,但它似乎没有什么区别.但是,此代码确实有效:
var test = 'var s = document.createElement(\'SCRIPT\');</div>';
Run Code Online (Sandbox Code Playgroud)
有什么区别?我必须在这里遗漏一些东西.
我试图调用一个看起来像这样的非托管函数(DATA是我的C#结构):
[DllImport("data.dll")]
internal static unsafe extern int MyExternalFunction(DATA* pData, uint numElements);
Run Code Online (Sandbox Code Playgroud)
这就是我从C#调用函数的方式:
DATA[] data = new DATA[64];
fixed (DATA* pData = data )
{
MyExternalFunction(pData, 64);
}
[StructLayout(LayoutKind.Sequential)]
internal struct DATA
{
internal uint a;
internal uint b;
internal uint c;
internal POINT pos;
}
[StructLayout(LayoutKind.Sequential)]
internal struct POINT
{
internal int x;
internal int y;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我收到了这个错误:"无法编组'参数#1':指针不能引用封送结构."
如果它有任何区别,我的DATA结构中有嵌套的结构.我无法控制外部方法的设计方式.调用此函数并接收结构数组的正确方法是什么?