小编Che*_*eso的帖子

我可以从elisp中读取Windows注册表吗?怎么样?

我只是想做这样的事情

(defun my-fun (reg-path) 
  "reads the value from the given Windows registry path."
     ...??...
)
Run Code Online (Sandbox Code Playgroud)

是否有一个内置的fn这样做?

或者是否有一个内置于Windows的命令行工具,我可以运行以检索reg值?

我想象的方式是在cscript.exe中运行一个完成工作的.js文件.


回答

(defun my-reg-read (regpath)
  "read a path in the Windows registry. This probably works for string 
  values only. If the path does not exist, it returns nil. "
  (let ((reg.exe (concat (getenv "windir") "\\system32\\reg.exe"))
        tokens last-token)

    (setq reg-value (shell-command-to-string (concat reg.exe " query " regpath))
          tokens (split-string reg-value nil t)
          last-token (nth (1- (length tokens)) tokens))

    (and (not (string= last-token "value.")) last-token))) …
Run Code Online (Sandbox Code Playgroud)

windows registry emacs

4
推荐指数
1
解决办法
270
查看次数

升级到emacs 23.1有哪些令人信服的理由?

我看到了emacs 23.1发布的消息.

对于程序员来说,升级的重要原因是什么?我目前在22.2.

列出的所有功能对我来说都不是必须的.最直接有趣的是nXML现已集成.我已经拥有它了.

但我必须承认,我不知道"智能迷你缓冲区完成"或"每缓冲区文本缩放"背后的真正含义.

任何人都有这些东西的提示或例子吗?

emacs

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

令人费解.Net C#DeflateStream问题

我想知道是否有人可以解释一个令我疯狂的问题:

我正在写一个压缩解压缩测试类.为了测试它,我将数据集序列化为内存流,压缩它,解压缩并比较结果.

压缩很好,但是压缩是它碰到污垢的地方.这是解压缩功能:

    public static Stream GetUncompressedStreamCopy(Stream inStream)
    {
      Stream outStream = new MemoryStream();

      inStream.Position = 0;

      DeflateStream uncompressStream = new DeflateStream(inStream, 
        CompressionMode.Decompress, true);

      byte[] buffer = new byte[65536];

      int totalread = 0;
      int bytesread = 0;


      do {
        bytesread = uncompressStream.Read(buffer, 0, buffer.Length);
        totalread += bytesread;
        outStream.Write(buffer, 0, bytesread);
        Console.WriteLine("bytesRead: [{0}]\t outStream.Length [{1}]",
        bytesread, outStream.Length);
      } while (bytesread > 0);


      Console.WriteLine("total bytes read [{0}]", totalread);
      outStream.Flush();
      return outStream;
}
Run Code Online (Sandbox Code Playgroud)

对于大小为65536的缓冲区,解压缩的流总是返回比未压缩的小一个字节.

现在这让我想到了我正在与之争斗的第二个问题.对于某些缓冲区大小,uncompressStream.Read返回0,即使仍有压缩数据需要提取.

对于这些情况,deflateStream.Read(s)只在do {}循环中返回一次然后返回一个等于buffersize的未压缩流,如果你将buffersize增加一个字节,那么一切都很好(除了丢失的字节).

缓冲区大小为65536的输出:(原始未压缩数据为207833)

bytesRead: [65536]       outStream.Length [65536]
bytesRead: …
Run Code Online (Sandbox Code Playgroud)

.net c# deflate deflatestream

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

为什么没有针对.NET的CPAN?

CPAN对于Perl来说是一个非常有用的资源.

为什么没有针对.NET的CPAN?应该有吗?是否有其他编程或平台技术具有类似CPAN的基础架构?


编辑
没有人提到过这个问题:.NET中包含的C omprehensive基类库是否是您不希望看到类似CPAN的.NET的主要原因之一?我的意思是,有用于XML,HTTP,加密等的Perl库 - 但所有这些都包含在BCL开箱即用中.除了内置的FTP库之外,没有人需要另一个FTP库.

相关:PHP有CPAN吗?

.net c# perl cpan

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

Winforms RichTextBox:如何将插入符号滚动到RichTextBox的中间?

我想滚动RichTextBox,以使插入符号大约位于RichTextBox的中间.

RichTextBox.ScrollToCaret()之类的东西,除了我不想把插入符号放在最顶层.

我看到了Winforms:Caret Position的屏幕位置,当然也看到了Win32函数SetCaretPos().但我不确定如何将SetCaretPos所需的x,y转换为richtextbox中的行.

.net richtextbox winforms

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

部分方法是否有害?

在C#3.0中,Microsoft引入了对称为部分方法的支持.

你用它们吗?你能描述一下如何以及为什么?

您是否考虑使用部分方法进行良好的编程实践?

c# class-design

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

nmake:批处理文件可以作为 make 命令块的一部分运行,影响 nmake.exe 进程的环境吗?

我想在 nmake 中如果我这样做:

 example :
        set value=77
        echo %%value%%
Run Code Online (Sandbox Code Playgroud)

结果将在控制台上显示 77。

有没有办法让我调用 .cmd 或 .bat 文件来影响 nmake.exe 进程的环境?假设我将该语句放在set value=77名为“setvalue.cmd”的文件中。然后将 makefile 更改为:

 example :
        setvalue
        echo %%value%%
Run Code Online (Sandbox Code Playgroud)

我得到:

%value%
Run Code Online (Sandbox Code Playgroud)

或者,如果有一种方法可以在命令块中设置宏,那也可以。或者,一种从批处理文件设置宏值的方法,甚至在命令块之外也是如此。

nmake

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

在ICollection <Tuple <T1,T2 >>上实现.Contains()的最简单方法

假设我有一个Dictionary<String, Tuple<T1,T2>>并且我想确定任何字典值是否具有T1的V1.我怎样才能最优雅地做到这一点?

LINQ?

.net c# linq generics collections

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

澄清WINHTTP_STATUS_CALLBACK函数的用法,用于SSL状态代码


我在C中写了一些WinHttp代码.我正在通过SSL发送请求,为了处理SSL错误,我正在注册一个WINHTTP_STATUS_CALLBACK函数,通过调用WinHttpSetStatusCallback并将dwNotificationFlags设置为WINHTTP_CALLBACK_STATUS_SECURE_FAILURE.

WINHTTP_STATUS_CALLBACK的文档说,当使用dwInternetStatus= WINHTTP_CALLBACK_STATUS_SECURE_FAILURE 调用回调时,它表示

从服务器检索安全套接字层(SSL)证书时遇到一个或多个错误.lpvStatusInformation参数包含一个标志.有关更多信息,请参阅lpvStatusInformation的说明.

现在,该lpvStatusInformation参数被输入为LPVOID.但是我从文档中的声明中得出它,在WINHTTP_CALLBACK_STATUS_SECURE_FAILURE的情况下它不被视为指针.

该文件lpvStatusInformation说:

如果dwInternetStatus参数为WINHTTP_CALLBACK_STATUS_SECURE_FAILURE,则此参数可以是以下值之一.

......这些值是这些十六进制值之一:1,2,4,8,10,20,40.(见WinHttp.h)

这对我来说似乎很清楚.我不应该取消引用指针来获取值.所述 lpvStatusInformation保持的十六进制值,而不是一个指针.

我能正确地解释这个吗?


我已经用这种方式编写了代码,并且它在过去也有用.我认为!但是现在我得到的lpvStatusInformation是0x0104f288.这与任何十六进制值都没有任何关系.也不可能通过对可能的值进行OR运算来创建该值(尽管doc在同一个DWORD中没有说明多个状态项).它看起来像是指向我的指针.当我取消引用指针时,我得到0x8,这对应于WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA,这至少是有道理的.


问题是,我应该取消引用该指针吗?

这是回调代码:

void CALLBACK Iirf_WinHttpSslStatusCallback( HINTERNET hInternet,
                                             DWORD_PTR context,
                                             DWORD code,
                                             void * pInfo,
                                             DWORD infoLength)
{
    if (code == WINHTTP_CALLBACK_STATUS_SECURE_FAILURE) {
        ConfigInfo * cfg = (ConfigInfo *) context; // app-specific structure
        DWORD details = (DWORD) pInfo; // do not de-reference??
        CHAR buffer[32];
        CHAR * statusDescription = NULL;

        switch (details) {
            case …
Run Code Online (Sandbox Code Playgroud)

winhttp

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

DataGridView - 如何使复选框充当单选按钮?

我有一个Windows窗体应用程序,它显示DataGridView中的对象列表.

此控件将bool值呈现为复选框.

对象属性中有一组三个相互排斥的复选框.最多其中一个可能是真的.因此,我希望复选框的行为类似于一组单选按钮.

只是老家伙的一个侧面评论:我认为这些天人们甚至不知道为什么这些被称为单选按钮.在过去,汽车中的收音机有4或5个按钮,按下任何一个按钮都会导致所有其他按钮弹出.它们是相互排斥的.这些天"单选按钮"可能不是一个有用的描述,因为无线电不再有这样的按钮,我不认为.

我该怎么做?我想如果我将"CheckedChanged"事件附加到复选框,我知道该行,我将能够找到所有其他复选框.

在首次渲染时,我可以挂钩什么事件来抓住复选框控件,以便我可以将CheckedChanged事件附加到它?我知道DataGridView.CellFormatting,但我认为这是错误的,因为每次DataGridView绘制时都会调用它.我真的需要一个仅在第一次呈现DGV时调用的事件.

c# datagridview winforms

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