小编Rom*_* R.的帖子

Wininet InternetGetCookie获取空cookie数据

我目前正致力于使用Csharp获取cookie数据.我正在使用DLLImport在wininet.dll中调用InternetGetCookie,但是当我尝试它时,函数返回ERROR_INSUFFICIENT_BUFFER(错误代码122).

谁能帮我这个 ?

这是Dll参考的代码:

[DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint="InternetGetCookie")]
        public static extern bool InternetGetCookie(string lpszUrl, string lpszCookieName,
            ref StringBuilder lpszCookieData, ref int lpdwSize);
Run Code Online (Sandbox Code Playgroud)

这就是我调用函数的方式:

InternetGetCookie("http://example.com", null, ref lpszCookieData, ref size)
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# cookies wininet dll-reference

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

以编程方式在Windows 7上切换音频设备

在我的Windows 7 PC上,我有一套扬声器,一些无线耳机和一个USB网络摄像头.这意味着我有两个可能的音频输出设备和两个可能的音频输入设备.

我发现自己不得不经常在它们之间切换.目前这是一个手动过程:右键单击扬声器图标,选择"播放设备"或"录制设备"之一,在列表中选择正确的设备(并且那里也有一些"死"设备)然后点击"设置默认值".

我环顾四周,所有我能找到的人都是脚本SendKeys来实现自动化.

太糟糕了.

有没有以编程方式切换音频输入/输出设备,以便我可以编写一个简单的托盘应用程序/热键应用程序,以使这更容易?

audio winapi windows-7

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

所有.com和.net whois服务器的列表?

我正在尝试查找COM/NET的所有whois服务器列表.Verisign是.com,.net,.name,.cc和.tv域名的权威注册机构.

可能的解决方案: 使用.com区域文件中的域列表找出whois服务器的至少一百万个(通过whois.crsnic.net)的完整列表,并从whois结果中读取官方whois.

这样我就可以构建一个90%以上的完整列表.我已准备好走这条路并在这里发布结果,但如果有人知道更好的方式/来源,请帮忙.谢谢!

dns whois verisign

8
推荐指数
1
解决办法
5453
查看次数

在没有大多数编解码器的情况下编译FFMpeg

我正在寻找编译ffmpeg,以便它只支持少数几个编解码器.具体来说,只有PCM编解码器和MP3.

有关如何做到这一点的任何指示?它可以用编译标志完成,还是我需要编辑代码?

audio ffmpeg

8
推荐指数
1
解决办法
6962
查看次数

avformat_open_input()有什么作用?

我遵循代码与C中的ffmpeg库一起使用.ffmpeg库的文档很少,很难理解每个函数的确切功能.
我理解代码(正在做什么).但我缺乏清晰度.有人可以帮帮我吗?

Q1)将struct AVFrameContext****和**filename(所需的最小非NULL参数)传递给函数avformat_open_input().顾名思义,输入文件是"打开"的.怎么样 ?

c ffmpeg

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

如何使用CoCreateInstance()来获取com对象?

我注册了一个COM组件.我想打电话给它.

CLSID clsid;
RIID iid;
HRESULT hr = CLSIDFromProgID(OLESTR("se.mysoft"),&clsid);
LPVOID *pRet;
HRESULT hr1 = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, iid, pRet);
Run Code Online (Sandbox Code Playgroud)

我可以获得成功的clsid,但我在哪里可以得到iid?

我用OLE VIEWER查找界面:

 [
 odl,
 uuid(F3F54BC2-D6D1-4A85-B943-16287ECEA64C),
 helpstring("Isesoft Interface"),
 dual,
 oleautomation
 ]
 interface Isesoft : IDispatch {
Run Code Online (Sandbox Code Playgroud)

然后我改变了我的代码:

CLSID clsid;
RIID iid;
IDispatch* pDispatch;
HRESULT hr = CLSIDFromProgID(OLESTR("se.mysoft"),&clsid);
HRESULT hr1 = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,  IID_IDispatch,(void **)&pDispatch);
Run Code Online (Sandbox Code Playgroud)

但hr1返回失败.

c++ com mingw

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

使用MSDN库进行多屏幕捕获

我正在使用多个显示单元进行屏幕捕获.由于GetDesktopWindow()只获取主监视器的句柄,我尝试使用EnumDisplayMonitors()来完成这项工作.

在阅读MSDN网站后,我在main()中写了这些:

HDC hdc = GetDC(NULL);
EnumDisplayMonitors(hdc, NULL, MyCapScreenEnumProc, 0);
ReleaseDC(NULL, hdc);
Run Code Online (Sandbox Code Playgroud)

对于" BOOL CALLBACK MyCapScreenEnumProc(HMONITOR hMonitor,HDC hdcMonitor,LPRECT lprcMonitor,LPARAM dwData) "回调函数,我从MSDN复制了示例函数" int CaptureAnImage(HWND hWnd) " :捕获图像并进行了以下修改:

  1. 而不是读取HWND参数,我在函数中声明它并使用GetDesktopWindow()初始化它
  2. 删除了用于拉伸设备上下文的代码
  3. 使用参数hdcMonitor作为设备上下文
  4. 使用参数lprcMonitor作为RECT
  5. 添加了用于生成唯一文件名的代码

这是完整的代码:

BOOL CALLBACK MyCapScreenEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
    HWND hWnd = GetDesktopWindow();
    HDC hdcMemDC = NULL;
    HBITMAP hbmScreen = NULL;
    BITMAP bmpScreen;

    //generate a unique file name for the bitmaps
    static int file_number = 1;
    stringstream ss;
    ss << "all_capture_" << file_number++ …
Run Code Online (Sandbox Code Playgroud)

c++ winapi gdi screen-capture

7
推荐指数
1
解决办法
2038
查看次数

DirectShow,Media Foundation,DXVA,什么?

我的任务是修改一个使用DirectShow进行视频渲染的应用程序.旧的应用程序工作正常,但它开始显示年龄.

由于我有游戏背景,我想我应该这样做.在使用不同的技术制作了一堆原型之后,我非常确定我可以提取视频到纹理的渲染并使用DirectX来满足所有客户的请求.

但是,我现在已经到了必须选择一种技术的地步,我不能再迷失了......

  • DirectShow的
  • 媒体基金会
    • 媒体会话(<Windows 8)
    • 媒体引擎(> Windows 8)
  • DXVA1
  • DXVA2
  • DXVA-HD

DirectShow显然是最古老的,但仍然运行良好,也主要是因为可用的大量编解码器.

媒体基金会已经推出了Windows Vista,直到Windows 8还有一个名为"媒体会话"的东西,之后他们推出了"媒体引擎".如果我是正确的编解码器被称为MFT?实际上有哪些网站可以像free-codecs.com一样提供这些网站?

除了这两种技术之外,还有DXVA,它允许您将视频解码卸载到GPU.目前,我遇到了3种不同的类型.DXVA1是自XP以来一直存在的实现,DXVA2是更新的API.但什么是DXVA-HD?它比DXVA2更新还是同等名称?

我真的想转向媒体基金会,开箱即用的编解码器非常适合客户想要使用的格式.我所关心的是为它获取编解码器是多么容易...... Windows 8+默认媒体播放器是否仍然具有DirectShow和MF渲染路径并且可以即时交换它们还是微软完全逐步淘汰DirectShow?

我也无法完全理解DXVA应该如何工作.鉴于我想基本上在游戏中渲染视频,只有让所有渲染实际发生在GPU上并将应用程序逻辑保留在CPU上才有意义,但我真的找不到任何关于如何使用Media的好例子基础.这主要是因为我不知道DXVA2和DXVA-HD之间的区别.Windows 7 SDK附带了所有3个实现的示例......

如果有人能够以粗体回答我的问题,请纠正我的错误信息,并指出我正确的方向(DirectX + Media Foundation + DXVA-无论如何),我将非常感激!它可以像"结合Windows 7 SDK的这3个示例来获得您想要的"一样简单.

整个任务的目标是再次获得顶级形式的应用程序,我想绝对肯定我会选择像DirectShow已经拥有的下一个十年的技术:P

directx video directshow dxva ms-media-foundation

7
推荐指数
1
解决办法
1538
查看次数

Regsvr32奇怪的行为=> Regsvr32没有给出任何成功或失败的消息

我有一个directShow过滤器:MyFilter.ax

当我尝试使用Regsvr32实用程序注册MyFilter.ax时,它不会出现任何错误或任何消息(成功或失败).但是过滤器未注册.

Regsvr32实用程序适用于我的其他过滤器.

为什么Regsvr32 deoes不给出任何成功或失败的消息?如何调试我的Regsvr32故障成功?用于注册directshow过滤器的任何替代实用程序可能会给出有意义的消息?

最好的祝愿

更新:

我在虚拟机上安装了干净的win7操作系统.然后再次尝试register.Fail而没有来自regsvr32的消息响应.

但是再在虚拟机上安装一个干净的win7操作系统.然后进行所有更新.在我进行更新后,regsvr32工作并安装我的过滤器....我不知道是什么原因导致regsvr32失败以及什么样的更新修复它.或者它真的是一个更新问题......

com regsvr32 directshow comobject

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

在vc ++中将'System :: String ^'转换为'const char*'

如何在vc ++中将'System :: String ^'转换为'const char*'?

我的代码:

String ^Result1= "C:/Users/Dev/Desktop/imag.jpg";

IplImage *img1 = cvLoadImage(Result1, 1);

如果我喜欢上面它会产生以下错误.

error C2664: 'cvLoadImage' : cannot convert parameter 1 from 'System::String ^' to 'const char *'

请帮我.

string c++-cli char visual-c++

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