我对此有点困惑。我们有 ac#/WPF 屏幕捕获工具,可以使用 Graphics.CopyFromScreen 捕获桌面的一部分。
它可以在数十种不同的机器上正常运行,包括 XP、Win7 和至少一台 Windows8 虚拟机。
我们遇到过一台装有 Win8 的 Acer ZS600,我们看到了一种我无法理解的奇怪效果。
当您捕获时,它会捕获尺寸正确但位置错误的图像。它向顶部和左侧偏移。不是固定金额。当捕获窗口位于屏幕 0,0 位置时,效果很好,但当您将捕获窗口移离原点时,偏移量会增加。
我查看了代码,发现窗口位置(this.Top 和 this.Left)报告了错误的数字。
更奇怪的是,我们在 Acer Z5771 上尝试过这一点,除了使用 Windows 7 之外,它的硬件设置几乎相同。我们尝试更新 Zs600 显卡驱动程序,但没有效果。
有谁理解这一点,或建议修复或解决方法?
编辑:我已经编写了一个简单的应用程序,它在有问题的机器上显示了效果。在我的开发机器上它工作正常。此处下载:https ://s3-eu-west-1.amazonaws.com/kdownload/Tools/CaptureTool_app.zip
或者下载编译版本:https://s3-eu-west-1.amazonaws.com/kdownload/Tools/capturetest.exe
编辑:这是问题系统上使用的捕获应用程序的两个屏幕截图。https://s3-eu-west-1.amazonaws.com/kdownload/Tools/ProblemScreencap.png(编辑 - 在该屏幕截图中,我将 x&y 显示的数字与宽度和高度进行了切换,现在已在上传的代码中修复,请忽略此)
我正在构建一个使用 SQLite 作为存储数据库的 Windows 8 C#/XAML 应用程序,我正在尝试使用 SQLite-net 语法创建多个表。
从我到目前为止的研究来看,一个表是基于一个类创建的。首先,我通过以下方式创建了一个“帐户”类:
public class Account
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
public string Type { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后创建一个表并通过以下方式在代码中输入初始数据:
private static readonly string _dbPath =
Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "data.sqlite");
using (var db = new SQLite.SQLiteConnection(_dbPath))
{
db.CreateTable<Account>();
db.RunInTransaction(() =>
db.Insert(new Account()
{
Name = "MyCheckingAccount",
Type = "Checking",
})
);
}
Run Code Online (Sandbox Code Playgroud)
我想创建多个帐户表,但db.CreateTable<Account>()语法只是创建一个表,数据插入到列中,db.Insert().我看不到在哪里输入表本身的名称。
我如何创建多个表,即一个名为“BusinessAccounts”和另一个基于 Account 类的“PersonalAccounts”?
有没有办法用 SQLite-net 做到这一点?或者我是否需要以某种方式明确写出 SQLite …
我使用的是CreateProcess与DEBUG_ONLY_THIS_PROCESS标志。新进程已创建,但新运行的应用程序没有执行任何操作,当我使用任务管理器查看进程列表时,我看到的只是仅分配了 70KB 内存的 exe 文件的名称!
如果我创建没有DEBUG_ONLY_THIS_PROCESS标志的进程,应用程序将完美运行。
这是我的代码:
function TDebugger.StartDebug;
var
ProcInfo: TProcessInformation;
ProcessCreationFlags: Cardinal;
StartupInfo: TStartupInfo;
DE: TDebugEvent;
begin
// == init process info
ZeroMemory(@ProcInfo, SizeOf(TProcessInformation));
// == init startup info
ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));
with StartupInfo do begin
cb := SizeOf(TStartupInfo);
lpDesktop := '';
dwX := CW_USEDEFAULT;
dwY := CW_USEDEFAULT;
dwXSize := CW_USEDEFAULT;
dwYSize := CW_USEDEFAULT;
wShowWindow := SW_SHOWDEFAULT;
end;
// == Create the process
ProcessCreationFlags := DEBUG_ONLY_THIS_PROCESS;
if (not CreateProcess(PWideChar(Path), Nil, Nil, Nil, False, …Run Code Online (Sandbox Code Playgroud) 我有一个 d3dDevice:
ComPtr<ID3D11Device1>d3dDevice;
Run Code Online (Sandbox Code Playgroud)
我在这里将它用于 dxgiDevice:
ComPtr<IDXGIDevice3> dxgiDevice2;
HRESULT hr;
hr = d3dDevice.As( &dxgiDevice2 ); // S_OK
hr = d2dFactory->CreateDevice( dxgiDevice2.Get(), d2dDevice.GetAddressOf() ); // E_INVALIDARG One or more arguments are invalid
hr = d2dDevice->CreateDeviceContext(
D2D1_DEVICE_CONTEXT_OPTIONS_NONE,
&d2dDeviceContext
);
Run Code Online (Sandbox Code Playgroud)
为什么在运行时会发生此错误?
http://msdn.microsoft.com/en-us/library/windows/desktop/dn280482(v=vs.85).aspx
与问题相关的全部代码:http : //pastebin.com/P7Rs9xdh
static int[] scores = new int[100];
static int[] scorescopy;
public static int orderscores()
{
scorescopy = scores;
Array.Sort(scorescopy);
int sortingtoolb = 0;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我试图获取我的初始数组的副本,然后尝试对该副本进行排序.但是,当我使用Array.Sort()函数时,我的第一个数组也会继续排序,但我想保留它.我试图在scorecopy上取消新的声明,但这并没有影响结果.
另外,有没有办法将数组中未使用的变量保持为null?(如果我没有使用它的所有部分,我会在数组的开头得到一堆0).
我在运行Windows 8.1 Pro的系统上使用Visual Studio Express 2012 for Windows 8.
我很好奇我可以在Delphi XE5中为Windows 8商店构建应用程序吗?
(你知道,看起来像瓷砖的那些.)
我搜索过Embarcadero的网站.它说明了这一点
您的应用程序将在具有Intel和Intel Atom硬件的Windows台式机和基于x86的平板电脑上运行,例如Microsoft Surface Professional,HP的Slate平板电脑,华硕等,以及来自Acer,Samsung等的基于AMD处理器的平板电脑.
从此描述中,似乎支持Windows应用商店应用.我对吗?
我有一个Windows商店应用程序.该应用程序通过传递流媒体在MediaElement中播放音频,并在屏幕上随着音频的进展进行一些活动.但是当应用程序最小化时,音频"暂停"和活动,当应用程序最大化时,它将恢复.当应用程序最小化时,"OnSuspending"事件也不是触发器(我在该功能上设置断点并且它没有中断).
如何在最小化时停止应用程序"暂停".
如何在Windows 8上使CheckBox更大?
我已经了解LayoutTransform,但看起来在Windows 8上没有这个属性:
<CheckBox>
<CheckBox.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2" />
</CheckBox.LayoutTransform>
</CheckBox>
Run Code Online (Sandbox Code Playgroud) 我正在尝试为网站设置一种打印服务,以便与(pdf,html,excel)进行通信并发送可打印的文档.我决定去.
我在下面创建了简单的程序.在某些电脑上,它可以在其他电脑上工作(Windows 7)(Windows 8)它不起作用(右).当它不起作用时,作业在打印队列中可见不到一秒钟然后消失.代码不输出任何错误.我在Windows事件日志中找不到任何内容.
我也在c ++中尝试了一个RawPrinter示例,我可以在网上找到但是显示了相同的行为.
有谁知道我做错了什么?:(
package main
import (
"fmt"
"code.google.com/p/brainman/printer"
)
func main() {
defaultPrinterName, _ := printer.Default()
fmt.Println(defaultPrinterName)
p, err := printer.Open(defaultPrinterName)
if err != nil {
fmt.Println("Open failed: %v", err)
}
defer p.Close()
err = p.StartDocument("my document", "RAW")
if err != nil {
fmt.Println("StartDocument failed: %v", err)
}
defer p.EndDocument()
err = p.StartPage()
if err != nil {
fmt.Println("StartPage failed: %v", err)
}
str := "testing 123"
mySlice := []byte(str)
_, err = p.Write(mySlice)
if …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,我正在使用Windows 8 Toast通知
我需要的是显示通知时我需要两个按钮; 第一个被解雇(我们在示例中有这个)和第二个将在我的代码中实现事件,如果用户按下它我需要执行代码应用程序.
这是一个示例,显示Windows 8 Toast通知上的按钮,但我无法重命名(贪睡)按钮文本,并且无法在我的代码中添加其事件处理程序.
string toastXmlString =
"<toast duration=\"long\">\n" +
"<visual>\"<binding template=\"ToastText02\">\n" +
"<text id=\"1\">Alarms Notifications SDK Sample App</text>\n" +
"<text id=\"2\">" + alarmName + "</text>\n" +
"</binding>\n" +
"</visual>\n" +
"<commands scenario=\"alarm\">\n" +
"<command id=\"snooze\"/>\n" +
"<command id=\"dismiss\"/>\n" +
"</commands>\n" +
"</toast>\n";
Run Code Online (Sandbox Code Playgroud)
这是结果:

谢谢