.NET Compact是.NET的完美子集吗?
我是否可以编写Windows窗体应用程序并在.NET Compact上运行它,假设我考虑了屏幕大小和其他限制,并避免.NET Compact不支持的类和方法,或者.NET Compact是一个不同且不兼容的GUI框架?
我在DOS中有一个批处理文件进行一些检查,我需要在完成后发送一封电子邮件.我在interwebz上找到了一些解决方案,但大多数都是第三方,或者只是在Outlook中打开一条新消息.我需要命令才能完整地发送电子邮件而无需任何人工干预.
如果这很重要,我们在这里使用MS Exchange.
谢谢!
使用"C:\ Program Files(x86)"我遇到了一个奇怪的问题,程序位于该路径下方的某个位置.我用测试程序重现了这个行为.
int _tmain(int argc, _TCHAR* argv[])
{
wprintf(L"%d\n", argc);
for (int i = 0; i < argc; i++) {
wprintf(L"%s\n", argv[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序计算并返回所有命令行参数(包括用于标识程序的程序路径).我把它命名为"HelloWorld.exe",因为我很着急.
对于运行程序的三种可能方式,它给出了两种不同的结果,而我期望得到相同的结果.
当我从自己的目录运行HelloWorld.exe时,输出是
1
HelloWorld.exe
Run Code Online (Sandbox Code Playgroud)
该输出是正确的和预期的.
当我从另一个位置运行位于"P:\ Test(x86)"的HelloWorld.exe并使用引用路径时,输出为
1
P:\Test (x86)\HelloWorld.exe
Run Code Online (Sandbox Code Playgroud)
该输出也是正确的和预期的.
但是,当我从另一个位置运行HelloWorld.exe并使用带有转义空格和括号的路径时,找到该程序(即路径是正确的),但输出错误:
2
P:\Test
(x86)\HelloWorld.exe
Run Code Online (Sandbox Code Playgroud)
由于某种原因,逃离的空间
P:\ Test\^ ^(x86 ^)\ HelloWorld.exe
由于某种原因和Windows成为空间读取操作符,在读取路径作为一个字符串来查找程序之后,在创建程序然后引用的数组之前,确定它实际上是两个字符串.
Windows XP(x86)和Windows Server 2008 R2(x64)中都会出现此问题.我假设它存在于所有(NT)版本的Windows中.
我似乎正在与我的愚蠢作斗争。
该站点解释了各种版本的 CP/M 下的系统调用。
但是,当我尝试使用 call 2(C_WRITE,控制台输出)时,没有任何反应。
我有以下代码。
ORG 100h
LD E,'a'
LD C,2
CALL 5
CALL 0
Run Code Online (Sandbox Code Playgroud)
我凭记忆在这里背诵。如果有拼写错误,请放心,它们不在原始文件中,因为文件确实已编译并且我有一个 COM 文件要启动。
我认为这些行的含义如下:
该程序启动和退出没有问题。如果我删除最后一个命令,它会挂起计算机(我猜这也是预期的,并且显示 CALL 0 有效)。
但是,它不打印 ASCII 字符。(但它确实打印了一个额外的新行,但系统可能已经这样做了。)
我怎样才能让我的 CP/M 程序做系统调用应该做的事情?我究竟做错了什么?
更新:问题是我尝试过的所有汇编程序都期望源文件具有某种格式。此文件与 Microsoft 的宏汇编程序一起使用:
.Z80
START: LD E,'a'
LD C,2
CALL 5
JP 0
Run Code Online (Sandbox Code Playgroud)
我认为(我在猜测)asm.com(DR 的汇编程序)和 m80.com(Microsoft 的宏汇编程序)正在期待 Intel …
我试图用PowerShell显示一个消息框,带有yes和no按钮.
我可以使用OK按钮显示一个消息框:
[system.windows.forms.messagebox]::show("Hello, world!")
Run Code Online (Sandbox Code Playgroud)
我可以使用我想要的按钮创建一个变量$按钮:
$buttons=[system.windows.forms.messageboxbuttons].yesno
Run Code Online (Sandbox Code Playgroud)
我可以看到Show()静态方法被重载,其中一个选项是给出三个参数:
Show(String,String,MessageBoxButtons)显示带有指定文本,标题和按钮的消息框.
那么自然(?)我决定这样称呼:
[system.windows.forms.messagebox]::show("Are you sure?","",$buttons)
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
找不到"Show"的重载和参数count:"3".
但是"Show"有一个超载,接受三个参数!
我究竟做错了什么?
(并且有人可以告诉我为什么在PowerShell中调用方法通常使用点语法:object.method(),但MessageBox类需要"::"?这令人困惑.)
当我在PowerShell中创建表单(窗口)时,我通常可以使用.ShowDialog()显示表单:
$form = New-Object System.Windows.Forms.Form
$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
.VhowDialog()之前和之后将.Visible设置为False.
但当我做.Show()屏幕上没有显示任何内容:
$form.Show()
Run Code Online (Sandbox Code Playgroud)
而.Visible现在设置为True(大概是因为.Show()使形式正式可见.)
当我现在再次尝试.ShowDialog()表单时,我收到以下错误消息:
"已经可见的表单不能显示为模式对话框.在调用showDialog之前,将表单的visible属性设置为false."
但是当我再次按照说明操作.ShowDialog()时
$form.Visible=0
$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)
结果是屏幕上没有显示任何内容,PowerShell挂起并且无法恢复(ctrl-c似乎不起作用).我认为这是因为表单在某个地方显示模式,我无法看到它(或Tab键到它).但为什么?
表格的坐标没有改变.那么表单如何确定它何时在物理上可见以及何时不可见?
我有一个NSTableView有两列和一个数据源,用数据填充它.那部分有效.
我怎样才能获得数据(NSString格式NSTableView?我可以获取所选行,但NSTableView似乎没有访问数据的方法.
从我的数据源获取数据似乎返回无用的数据(类型ID,NSLog()并且NSRunAlertPanel()都声称数据不属于该类型NSString.
什么是从中获取数据的最简单方法NSTableView?
更新:
原来从我的数据源获取数据的原因未能与返回做NSString的是一部分NSArray的tableView()方法.
我的输入文件包含我为表格视图中的列拆分的行.在NSTableView得到正确的数据,但是当我打电话的tableView()方法我自己,我碰上一个EXC_BAD_ACCESS我假设有内存管理做的错误.
另一个更新:
这不是内存管理.这是我的应用程序无法识别NSTableColumn它想要的.我编写了另一种手动访问数据的方法,该方法使用int作为列而不是a NSTableColumn而且有效.
我正在使用以下PowerShell 2.0代码从vb输入框中获取输入:
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
$name = [Microsoft.VisualBasic.Interaction]::InputBox("What is your name?", "Name", "bob")
Run Code Online (Sandbox Code Playgroud)
有时当我运行它时,输入框出现在活动窗口后面.有没有办法让输入框最顶端?或者一个简单的方法来获得它的手柄,只需使用setforegroundwindow?
谢谢!!
Visual Studio 2010(付费版)为.NET程序提供了四种目标CPU:AnyCPU,x86,x64和Itanium.
这些设置究竟做了什么?
我注意到(在x64 Windows 7计算机上),使用AnyCPU和x86创建的二进制文件具有相同的大小,使用x64或Itanium创建的二进制文件具有相同的大小(但小于第一个).为x86创建的二进制文件似乎也在WoW64中运行,而为AnyCPU编译的相同大小的二进制文件则不会.针对Itanium优化的二进制文件在Windows 7 x64上根本不运行(这是有意义的).
我假设Windows在任何本机模式下运行AnyCPU二进制文件(在我的情况下为x64)并在64位计算机(x64和Itanium)上的WoW64中运行x86.但二进制大小是如何进入的?
我正在尝试从 PowerShell 为 Windows 服务的用户设置权限。但 WMI 完全忽略我的更改。我究竟做错了什么?
$service = Get-WmiObject -EnableAllPrivileges Win32_Service | Where-Object {$_.Name -eq "HubertService"}
$descriptor = $service.GetSecurityDescriptor()
$descriptor.Descriptor.Owner
Run Code Online (Sandbox Code Playgroud)
到目前为止这有效。我现在有了一个很好的安全描述符。我可以显示所有者。
现在,如果我更改任何内容,例如其中一个 ACE 的 AccessMask,这也有效:
$descriptor.Descriptor.DACL[0].AccessMask = 0
Run Code Online (Sandbox Code Playgroud)
我什至可以将此修改后的描述符写入我的 Win32_Service 对象:
$service.InvokeMethod("SetSecurityDescriptor", $descriptor, $null)
Run Code Online (Sandbox Code Playgroud)
然而,之前和之后
$service.Put()
Run Code Online (Sandbox Code Playgroud)
当我创建新的 $service 变量并对其运行 GetSecurityDeciptor() 时,修改根本不会显示。
我究竟做错了什么?
请原谅我的无知,但我既不知道C++也不知道GTK +.
在GTK +小部件中设置字符串时使用哪种字符串类型?
在.NET中,传递给控件的字符串显然是.NET System.String.在Cocoa中,传递给控件的字符串是NSString.但我知道C++没有标准化的字符串类型(但确实有几种,具体取决于所使用的库).
那么Strings如何传递给GTK +小部件呢?
(我在想C弦,但我想知道.)
我有一个用于 MS-DOS 的 Hello, World 程序,它使用 int 21h 进行系统调用。
mov dx,hello
mov ah,9
int 0x21
mov ah,0
int 0x21
Run Code Online (Sandbox Code Playgroud)
“hello”是字符串“hello, world”,13,10,“$”的地址。
该程序有效。
然而,当我用“call 5”替换(第一个)“int 0x21”时,程序使计算机崩溃(即运行PTS-DOS的VirtualBox虚拟机)。在 DOSbox 上,它只是终止并返回到命令提示符。
我尝试使用不同的寄存器来存储地址和电话号码,但总是得到相同的结果。
现在我想知道...
有任何想法吗?
更新:我接受了答案,因为根据文档它是正确的。它仍然无法工作,但这可能是由于我的 DOS 版本或其他问题造成的。
powershell ×4
.net ×2
windows ×2
winforms ×2
assembly ×1
batch-file ×1
c++ ×1
cmd ×1
cocoa ×1
command-line ×1
cpm ×1
debugging ×1
dos ×1
gtk ×1
nstableview ×1
objective-c ×1
string ×1
system-calls ×1
windows-nt ×1
wmi ×1
z80 ×1