我正在c#中创建一个Windows窗体应用程序,它将在Windows启动时启动.用户还可以从桌面上的图标启动应用程序.我希望应用程序在系统托盘中最小化,如果它是从Windows启动启动的,并且如果用户点击其快捷图标启动,则处于正常的窗口状态.有没有办法检测应用程序是由用户启动还是启动?
我正在使用此代码使应用程序在启动时出现
regesiterykey.SetValue("MyApp", Application.ExecutablePath.ToString());
Run Code Online (Sandbox Code Playgroud) 我知道,这是这个问题的重复问题.但我遇到了同样的问题,也许我可以提供更多可用的信息.
如果我尝试以下示例查询:
DECLARE @_Files TABLE (ID INT, Filename VARCHAR(MAX));
DECLARE @_Errors TABLE (ID INT, Label VARCHAR(MAX), Value VARCHAR(MAX));
insert into @_Files
select 73, 'abc'
insert into @_Errors
select 73, 'Some label name', 'Just a value'
select
*
from
@_Errors
inner join @_Files
on @_Errors.ID = @_Files.ID
Run Code Online (Sandbox Code Playgroud)
我收到了错误消息:
The @_Errors-scalar variable must be declared.
The @_Files-scalar variable must be declared.
Run Code Online (Sandbox Code Playgroud)
我正在使用SQL-Server 2008 R2 Express并且它在兼容级别100上运行.所以我知道为什么会出现这个错误?
实际上我正在使用.Net Framework 3.5,所以我拥有所有这些不错的小功能,如lambdas,linq等.
给定是一个串行连接(或者更抽象:一个流),您可以在其中接收一些数据,其格式如下:
struct Packet
{
byte STX
UInt16 DataLength
string Data
byte CRC
byte ETX
}
Run Code Online (Sandbox Code Playgroud)
使用传入数据的简单映射并没有帮助,因为您实际上并不知道一个数据包将持续多长时间,因为它是在结构中写入的(DataLength).
所以我的第一个想法是按字节读取流并将其放入???中.是的,这是下一个问题.在哪里存储这个第一个原始数据?进入一个简单的字节数组,具有最大可能的长度(即65540字节,因为DataLength是一个UInt16加上来自其他字段的附加字节).或者我应该打开一个队列并将其填满所有传入的字节或者可能存在另一个很好的可能性?
让我们假设这些问题被清除,我有一些本地缓冲区,它保存流中的所有原始字节.给定结构解释它的最好方法是什么?只是做某种for-or foreach-loop或存在更聪明(性能更好)的方式(例如使用regex或linq)?
最好的问候,奥利弗