小编Sco*_*ain的帖子

如何拦截每个试图在C#中使用API​​函数?

我需要阻止计算机上的任何屏幕捕获软件进行屏幕截图.由于它们都是标准的API函数,我想我可以监视和阻止它们.我需要使用C#.我所发现的是如何在某个程序中监视和阻止它们(屏幕捕获程序).他们正在寻找程序中的函数,然后他们在我的函数地址上更改它的地址.但是,如果我没有任何某些程序,我怎么能这样做呢?我需要阻止试图截屏的任何人.

c# hook winapi intercept

3
推荐指数
1
解决办法
1561
查看次数

在我的程序 C# 中集成一个运行时钟

我目前正在开发一个 Windows 窗体应用程序,我想要一个显示当前时间和日期的运行时钟。我现在拥有的代码确实显示了时间和日期,但它不会自行更新。有没有办法自行更新时间和日期?

这是我目前拥有的:

    lblTime.Text = DateTime.Now.ToString("hh:mm:ss tt"); 
    lblDate.Text = DateTime.Now.ToShortDateString();
Run Code Online (Sandbox Code Playgroud)

c# datetime winforms

3
推荐指数
1
解决办法
2万
查看次数

在SQL中具有列的结果百分比

我正在尝试获得一个结果,该结果将显示Uniuque“原因”,它们的数量以及它们占总数的百分比。到目前为止,我有

SELECT DISTINCT Reason, 
       COUNT(Reason) AS Number, 
       CAST(COUNT(Reason) AS float) / CAST(COUNT(*) AS float) AS percentage
FROM DeletedClients
Run Code Online (Sandbox Code Playgroud)

但是,正如我发现的COUNT(*)和COUNT(原因)给出的结果一样。所以我的基本问题是,当我在查询中使用distinct时如何获得总行数?我正在使用SQL Server 2005

sql select count distinct

2
推荐指数
1
解决办法
2493
查看次数

是由水平线大于45度的两个点形成的线

我试图找出由两个点定义的线是否大于或等于90度与水平线相比.这是我使用的代码

bool moreThan90 = false;
double angle = Math.Atan((double)(EndingLocation.Y - Location.Y) / (double)(EndingLocation.X - Location.X));
if (angle >= Math.PI / 2.0 || angle <= -Math.PI / 2.0)
    moreThan90 = true;
Run Code Online (Sandbox Code Playgroud)

我是否正确地执行了此操作,或者.Net中是否有更好的内置函数可以找到它?

编辑 - 实际上我搞砸了我的问题,我想说水平而不是90.然而答案让我到了一个可以弄明白的地方(真的我只需要指向Atan2).

c# math

2
推荐指数
1
解决办法
356
查看次数

如何让String.Format不解析{0}

我正在编写一个代码生成工具,经常会有类似的行

StringBuilder sp = new Stringbuilder();
sp.AppendFormat("        public {0}TextColumn()\n", className);
sp.AppendLine("        {"
sp.AppendLine("            Column = new DataGridViewTextBoxColumn();");
sp.AppendFormat("            Column.DataPropertyName = \"{0}\";\n", columnName);
Run Code Online (Sandbox Code Playgroud)

然而,我遇到的问题是当我遇到像这样的一行时.

sp.AppendFormat("return String.Format(\"{0} = '{0}'\", cmbList.SelectedValue);", columnName);
Run Code Online (Sandbox Code Playgroud)

我想第一个{0}在转向任何COLUMNNAME的价值,但我想seccond {0}独处因此内部String.Format会正确地处理它.

我该怎么做呢?

c# string.format code-generation

2
推荐指数
2
解决办法
294
查看次数

如何在运行时告诉我的进程是CPU绑定还是I/O绑定

我有一个程序,我通过TCP链接发送数据.我正在使用异步读取并写入磁盘和网络.如果我在中间放置一个DeflateStream(所以我在写入网络链接之前进行压缩,然后在收到数据并将其写入磁盘时进行解压缩)我在压缩端受CPU限制.这导致我的最大传输速率约为300 KB/s.但是,如果我删除压缩步骤,我现在I/O绑定到磁盘,我得到的传输速率40,000 KB/s.

在严格的LAN条件下,我的上限I/O限制总是超过300 KB/s,但是如果我的程序通过互联网运行,我很可能有一个低于300 KB/s的网络IO限制.

我想检测我是否受I/O限制,我的网络/磁盘链接是限制因素,或者如果我受CPU限制,压缩行为是最让我失望的原因.如何在运行时检测我的程序是否受到我的CPU或I/O的限制,以便我可以切换协议并获得最佳的传输速率?

private static void SendFile(string filename, NetworkStream stream, int sendBufferSize)
{
    using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 4096, FileOptions.Asynchronous | FileOptions.SequentialScan))
    using (var ds = new DeflateStream(stream, CompressionMode.Compress))
    {
        StreamUtilities.CopyAsync(fs, ds, sendBufferSize);
    }
}

public static void CopyAsync(Stream sourceStream, Stream destStream, int bufferSize = 4096)
{
    Byte[] bufferA = new Byte[bufferSize];
    Byte[] bufferB = new Byte[bufferSize];

    IAsyncResult writeResult = null;
    IAsyncResult readResult = null;

    bool …
Run Code Online (Sandbox Code Playgroud)

c# compression io networking .net-4.0

2
推荐指数
1
解决办法
553
查看次数

解析sql中的时间跨度字符串

我正在从数据源中读取数据,该数据源以 varchar 格式为我提供时间d:h:m:s:f,天部分始终为 0,该列表示一天中的时间。我想将此列添加到我已有的日期时间。

Entry_Date          Entry_Time
3/3/2009 12:00:00   0:16:17:6:0
8/24/2011 12:00:00  0:8:39:18:0
9/4/2010 12:00:00   0:12:33:18:0
Run Code Online (Sandbox Code Playgroud)

如果我使用 C#,我会这样做,TimeSpan.ParseExact但我不知道如何以纯粹的 sql 方式处理这个问题。

我会转换为,time但我使用的是 Sql Server 2005 并且没有time类型。

我如何将时间添加到相邻的日期时间?

sql sql-server parsing sql-server-2005

2
推荐指数
1
解决办法
2931
查看次数

在C#中导入C++ DLL,函数参数

我正在尝试在C#中导入我的C++ Dll.它似乎适用于没有参数的函数,但我的函数有一些问题.

我的C++功能:

__declspec(dllexport) bool SetValue(const std::string& strV, bool bUpload)
{ 
    return ::MyClass::SetValue(strV.c_str(), bUpload);              
}
Run Code Online (Sandbox Code Playgroud)

它包含在"extern"C"{"中

该函数调用另一个函数:

bool SetValue(const char* szValue, bool bUpload)
{
}
Run Code Online (Sandbox Code Playgroud)

我的C#功能:

[DllImport("MyDll.dll", EntryPoint = "SetValue", CharSet = CharSet.Auto, SetLastError = true, CallingConvention = CallingConvention.Cdecl)]
        public static extern void SetValue([MarshalAs(UnmanagedType.LPStr)]string strVal, bool bUpload);
Run Code Online (Sandbox Code Playgroud)

当我使用调试模式并输入SetValue(const char*sZvalue,bool bUpload)函数时,sZvalue为"0x4552494F",但是当我尝试扩展Visual Studio的视图以查看其值为"undefined value"的值时.

也许有人知道我的代码有什么问题?

谢谢 !

c# c++ string pinvoke

2
推荐指数
1
解决办法
1782
查看次数

当元素为NULL时,将聚合函数更改为输出NULL

我搜索有关警告的每个问题

警告:聚合或其他SET操作消除了空值.

通常人们希望将NULL值视为0.我想要相反,如何修改以下存储过程使其返回NULL而不是1?

CREATE PROCEDURE TestProcedure 
AS
BEGIN
select cast(null as int) as foo into #tmp

insert into #tmp values (1)

select sum(foo) from #tmp
END
GO
Run Code Online (Sandbox Code Playgroud)

我以为它会SET ANSI_NULLS ON(我在声明之前尝试,在程序本身内,在我的测试查询中执行程序之前)但是这似乎没有改变行为SUM(.

sql sql-server null stored-procedures sql-server-2012

2
推荐指数
1
解决办法
115
查看次数

在代码中将 Rigidbody2D 主体类型设置为“静态”?

我最近更新了我的 Unity(从 5.4.1f1 更新到 5.5.0f3),现在我的一款游戏中的 Rigidbody2D 似乎出现了一些问题。

所以基本上我曾经使用这段代码来使我的游戏对象(玩家)变得不易处理并脱离物理控制:

Player.GetComponent<Rigidbody2D>().isKinematic = true;
Run Code Online (Sandbox Code Playgroud)

在 Unity 更新后,此功能无法正常工作,并且在将玩家设置为运动学后,它会继续沿与“动态”时相同的方向移动(但无法控制)。注意:Unity 5.4.1f1 中并非如此。

所以我进入 Rigidbody2D 组件并注意到它发生了变化。 我的旧 RigidBody2D 的外观以及我的新 RigidBody2D 现在的外观

“kinematic”选项已移至“body type”选项中,并且在运行时它确实使用“.isKinematic = true”字符串将主体类型更改为 Kinematic(但如前所述,它无法正常工作)。

因此,我尝试手动将主体类型值更改为“静态”,并发现效果非常好!

所以我的问题是:如何在代码中将主体类型更改为静态?(如“isKinematic”),以及 Rigidbody2D(和运动学?)的变化发生了什么?

c# unity-game-engine

2
推荐指数
1
解决办法
2万
查看次数