小编bmm*_*m6o的帖子

检查PDF文件的最佳工具?

您建议使用什么工具检查PDF文件?

使用案例:我正在尝试以编程方式生成PDF文件(使用iText).我在实现某些布局方面遇到了麻烦,但是我的PDF文件的文本按我想要的方式布局(从Word生成).我想逆向工程他们是如何做到的.

PDF Inspector似乎很好,但我正在为Windows寻找一些东西.

pdf

74
推荐指数
7
解决办法
9万
查看次数

Bouncy Castle API文档在哪里?

我需要做一些基于加密的工作,我发现Bouncy Castle API既可用于C#也可用于JAVA,对于java它有文档,但它没有C#的文档.

任何人都可以提供一些资源,我可以从中获得使用C#使用Bouncy Castle的想法吗?

c# bouncycastle

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

chrome.runtime.connectNative生成Uncaught TypeError:undefined不是函数

我写了一个chrome扩展,调用这个connect()函数连接到本地C++程序:

function connect() {
  console.log("test1");
  //port = chrome.extension.connectNative('com.a.chrome_interface');
  port = chrome.runtime.connectNative('com.a.chrome_interface');

  port.onMessage.addListener(onNativeMessage);
  port.onDisconnect.addListener(onDisconnected);
  console.log("test5");
}
Run Code Online (Sandbox Code Playgroud)

我可以在Console中看到test1,但之后我收到了错误

Uncaught TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

在线

port = chrome.runtime.connectNative('com.a.chrome_interface');
Run Code Online (Sandbox Code Playgroud)

我的扩展清单文件在这里:

{
  "name": "CPP_Connect",
  "version": "1.0",
  "description": "Send data to CPP program",

  "content_scripts": [
   {
     "matches": ["<all_urls>"],
     "js": ["contentscript.js"]
   }
  ],

  "permissions": ["contextMenus", "tabs", "nativeMessaging", "<all_urls>"],

  "manifest_version": 2

}
Run Code Online (Sandbox Code Playgroud)

我的com.a.chrome_interface.json看起来像这样:

{
"name": "com.a.chrome_interface",
"description": "Chrome Native Messaging API Example Host",
"path": "com.a.chrome_interface",
"type": "stdio",
"allowed_origins": [
"chrome-extension://abc.../"
]
}
Run Code Online (Sandbox Code Playgroud)

com.a.chrome_interface是一个linux可执行C++文件,它生成一个文件,如果它被调用,则永远不会创建该文件.我确实放了两个文件

 /etc/opt/chrome/native-messaging-hosts/
Run Code Online (Sandbox Code Playgroud)

所以我想,我确实正确地注册了我的C++,但我也猜测,如果我注册错了,我应该得到一个不同的错误.如果我使用chrome.extension.connect()脚本运行低谷,错误消息消失,但没有数据到达我的C++程序.

我确实阅读并尝试按照 …

google-chrome google-chrome-extension chrome-native-messaging

10
推荐指数
1
解决办法
5738
查看次数

为什么显式接口实现?

我最近实现了一个类:

class TestClass : IDisposable
{
    RegistryKey m_key;
    public TestClass()
    {
        m_key = Registry.CurrentUser.OpenSubKey("Software", false);
    }

    public void Dispose()
    {
        // m_key.Dispose();
        IDisposable disp = m_key;
        disp.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我取消注释直接调用Dispose,我会收到错误CS0117("'Microsoft.Win32.RegistryKey'不包含'Dispose'的定义").一些谷歌搜索引导我到这个线程,在那里我了解了发生了什么,所以我现在了解它的机制.在MSDN文档表明,笔者更希望我调用close()代替Dispose()方法,但没有解释原因.

这种模式的目的是什么(我认为我在IO类中也看到了它)?鉴于这是班级作者的故意决定,上面的代码有多糟糕(通过IDisposable接口调用Dispose)?它不会太糟糕 - 毕竟,这是在使用声明中会发生什么,对吧?

[编辑:1]将标题从"非公开"更改为"显式"2)从我的代码中删除了显式实现,意外地从实验中留下了]

c# interface

9
推荐指数
1
解决办法
6575
查看次数

您使用哪些调试技术进行iPhone/iPod Web开发?

我正在开发一个Web应用程序,我们的目标是iPhone和iPod Touch.我熟悉FireFox和IE的调试工具(例如Firebug和IE Developer Toolbar),但我找不到iPod的任何东西.我不期待使用alert我的主要调试工具,特别是当我希望鼠标事件成为主要问题之一时.

是否真的是艺术的状态?你推荐什么工具?

另外,iPhone上的html布局与在Windows上运行的Safari的布局有多相似?在Mac上?

iphone debugging ipod-touch

6
推荐指数
1
解决办法
3705
查看次数

如何处置Task中使用的MemoryStream?

我有以下方法:

public void Write() {
     var tasks = new List<Task>();
     while(...) {
         var memoryStream = new MemoryStream(...);
         var task = _pageBlob.WritePagesAsync(memoryStream, ... );
         tasks.Add(task);
     }    
     Task.WaitAll(tasks.ToArray());
}
Run Code Online (Sandbox Code Playgroud)

如何正确处置memoryStream,在Task?我需要memoryStream在任务完成时处理对象.

c# multithreading

6
推荐指数
1
解决办法
1129
查看次数

如何声明泛型类型的类型参数本身是通用的?

假设我想实现一个过期的缓存,我想在底层存储容器上使它成为通用的.所以我将允许用户告诉我的班级要使用哪种容器类型.但由于我将填充私有类型,我需要它们告诉我一个通用类型.所以我想尝试做这样的事情:

class MyCache<K, V, Container> : IDictionary<K, V>
    where Container : // what goes here?
{
    private class MyValue
    {
        public readonly V Value;
        public readonly DateTime InsertionTime;
    }

    private IDictionary<K, MyValue> m_dict = new Container<K, MyValue>(); // a specialization of the generic container

    // implement IDictionary<K, V>, checking for value expiration
    public bool TryGetValue(K key, out V val)
    {
        MyValue myval;
        if (m_dict.TryGetValue(key, out myval))
        {
            if (Expired(myval.InsertionTime))
            {
                m_dict.Remove(key);
            }
            else
            {
                val = myval.Value;
                return true;
            } …
Run Code Online (Sandbox Code Playgroud)

c# generics

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

Web App模拟远程服务器:LogonUser还是LsaLogonUser?

我有一个C#Web应用程序(在某些配置中)允许用户输入Windows凭据,然后用于对远程服务进行身份验证.为实现此目的,我们当前调用LogonUser并使用生成的令牌创建WindowsIdentity,然后我们将其模拟.它一直很好,没有真正的问题.

最近我正在阅读有关Web身份验证的内容,并阅读了基本身份验证,IIS使用LsaLogonUser创建模拟上下文.我有点理解这两者之间的区别,听起来我们应该使用LsaLogonUser,但是我讨厌做出一些我不理解的改变.另一方面,在IIS上工作的人比我更了解Windows API.

那么:哪种功能更适合Web应用程序?你会说使用LogonUser是错误的,为什么?是否有情况(网络配置,用户权限等),哪一个会工作,另一个不会?使用LogonUser是否存在任何安全风险?

windows authentication web-applications

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

为方便起见,更改P/Invoke签名的合法性

RegSetValueEx 具有以下P/Invoke签名:

[DllImport("advapi32.dll", SetLastError = true)]
static extern uint RegSetValueEx(
 UIntPtr hKey,
 [MarshalAs(UnmanagedType.LPStr)]
 string lpValueName,
 int Reserved,
 RegistryValueKind dwType,
 IntPtr lpData,
 int cbData);
Run Code Online (Sandbox Code Playgroud)

IntPtr的lpData参数可以一起工作有疼痛感.要传递一个字符串值,我需要调用其中一个Marshall.StringToHGlobal函数,然后在完成后释放它.如果我将lpData参数类型更改为,我的代码可以更简单[MarshalAs(UnmanagedType.LPStr)]String lpData.这似乎工作,我可以想象在幕后,编组代码正在做我要做的事情IntPtr.如果这是合法的,我无法找到任何明确的陈述.任何人都可以提供吗?

[是的,我知道有托管代码与注册表连接.在我的特殊情况下,我不能使用它,即使我可以,我仍然会对一般的答案感兴趣]

c# pinvoke

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