小编GSe*_*erg的帖子

Windows上的共享内存访问权限

我开发了一个使用共享内存的Windows应用程序---即内存映射文件,用于进程间通信.我有一个Windows服务,它执行一些处理并定期将数据写入内存映射文件.我有一个单独的Windows应用程序,它从内存映射文件中读取并显示信息.该应用程序在Windows XP,XP Pro和Server 2003上按预期工作,但不在Vista上.

我可以看到写入内存映射文件的数据是由Windows服务正确发生的,因为我可以使用文本编辑器打开文件并查看存储的消息,但"消费者"应用程序无法从文件中读取.这里需要注意的一件有趣的事情是,如果我关闭使用者应用程序并重新启动它,它会消耗先前写入内存映射文件的消息.

另外,另一个奇怪的事情是当我使用远程桌面连接到Windows主机并通过远程桌面调用/使用消费者应用程序时,我得到相同的行为.但是,如果我调用远程桌面并使用以下命令连接到目标主机的控制台会话:mstsc -v:servername /F -console,一切正常.

这就是为什么我认为问题与权限有关.任何人都可以评论这个吗?

编辑:

我用来创建内存映射文件的ACL和同步访问的Mutex对象如下:

TCHAR * szSD = TEXT("D:")
               TEXT("(A;;RPWPCCDCLCSWRCWDWOGAFA;;;S-1-1-0)")
               TEXT("(A;;GA;;;BG)")
               TEXT("(A;;GA;;;AN)")
               TEXT("(A;;GA;;;AU)")
               TEXT("(A;;GA;;;LS)")
               TEXT("(A;;GA;;;RD)")
               TEXT("(A;;GA;;;WD)")
               TEXT("(A;;GA;;;BA)"); 
Run Code Online (Sandbox Code Playgroud)

我认为这可能是问题的一部分.

windows shared memory-access

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

使用带有标记的谷歌街景视图,如何将POV指向标记?

我有一个简单的街景工作,给我一个给出地址的街景:

var geocoder = new google.maps.Geocoder();
var address = "344 Laguna Dr, Milpitas, CA  95035";
geocoder.geocode( { 'address': address}, 
    function(results, status) {
        //alert (results);
    if (status == google.maps.GeocoderStatus.OK) {
        //alert(results[0].geometry.location);
        myStreetView = new google.maps.StreetViewPanorama(document.getElementById("map_canvas"));
        myStreetView.setPosition(results[0].geometry.location);
        var marker = new google.maps.Marker({
            position: results[0].geometry.location, 
            map: myStreetView, 
            title:address
        });
        //alert ("yay");
    } else {
        alert("Geocode was not successful for the following reason: " + status);
    }
});
Run Code Online (Sandbox Code Playgroud)

如您所见,我在街景视图中添加了地址标记.我的问题是,街景指向北方,标记位于南方.对于非特定地址,如何指定街景视图应指向地址的标记而不是默认指向北?

google-maps google-maps-api-3 google-maps-markers google-street-view

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

HBRUSH为RGB值

HBRUSH能从画笔ID中获取RGB值吗?例如:我正在寻找GRAY_BRUSHRGB值.

winapi gdi

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

在VB中是\整数除法?

在VB.NET中,即使两个操作数都是整数,'/'运算符也会导致值浮动(如果结果是非整数).
所以我尝试使用'\'运算符产生整数值而不管操作数.

所以我认为'\'是整数除法

2.5\3结果0

现在我尝试了
1.5\2
我预计它会为0但它会导致1.
现在,这是一个错误还是正确的结果?
实际上是什么'''运算符?

如果它是一个错误,它通过VB6存在

vb.net division integer-division

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

SQL Server 2008报告:组的最大总和

我在报表设计器中有这样的表格:

Category:       1     2       3      4   Total
Max Amount:     x     y       z      c     ?
Run Code Online (Sandbox Code Playgroud)

我需要得到Max Amount的总和,但是表达式不会让我取Sum(Max(amount)),并且对这个单元格禁用add total.

最大金额行是一个表达式,它取每个类别的最大值.源数据有重复的值,所以我只取最大值.例如:

Category    Amount
    1         4.6
    1         4.6
    1         4.6
    2          5
    3          4
Run Code Online (Sandbox Code Playgroud)

表中的其他列是不同的,但数量将是相同的,所以我不仅可以选择不同的值.

sql sum max sql-server-2008 reporting-services

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

Array.BinarySearch()返回值

我有以下数组:

double[] list = new double[] {0,0,100,100}
Run Code Online (Sandbox Code Playgroud)

为什么我要搜索29.6-3

Array.BinarySearch(list, 29.6)
Run Code Online (Sandbox Code Playgroud)

我期待+1-1.

返回参数的Array.BinarySearch()文档说:

如果找到值,则指定数组中指定值的索引.如果未找到值且值小于数组中的一个或多个元素,则为负数,它是第一个元素的索引的按位补码,其大于值.如果找不到值且值大于数组中的任何元素,则为负数,它是(最后一个元素的索引加1)的按位补码.

但这并没有对我说太多.

.net c#

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

使用在C++中创建的DLL从Excel和VBA调用C++函数

我创建了一个包含名为"koduj"的函数的DLL.通过在Excel工作表单元格中使用它来调用此函数将返回所需的结果.从VBA调用"koduj"会返回错误的答案.

koduj需要两个参数:string nr_idinteger x1.它nr_id以ASCII表示形式计算字母的总和并添加x1.计算的总和不是返回的.

我按照这里的说明进行操作.

这是我的.cpp源文件:

#include<Windows.h>
#include<string>
using namespace std;


//Convert BSTR to wstring for convenience
wstring BSTR_to_wstring (BSTR text){
    return wstring(text, SysStringLen(text));
}

//Calculate sum of letters in ASCII representation
int ASCII_sum (wstring ws){
    int sum = 0;
    for (unsigned int i = 0; i < ws.length(); i++)
        sum += ws[i];
    return sum;
}

//"koduj" function
int _stdcall koduj (BSTR nr_id, int & x1){
    wstring ws_nr_id = BSTR_to_wstring(nr_id); …
Run Code Online (Sandbox Code Playgroud)

c++ dll excel vba excel-vba

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

Microsoft.NET\Framework\v4.0.30319\clr.dll崩溃

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7a5f8
Faulting module name: clr.dll, version: 4.0.30319.18063, time stamp: 0x526767c6
Exception code: 0xc00000fd
Fault offset: 0x0007717d
Faulting process id: 0x1728
Faulting application start time: 0x01cf972772f04132
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Report Id: b4d0c430-031a-11e4-a40f-0050569e40da

当我们的MSM模块加载器服务崩溃时,继续收到此错误?我们加载了Windows更新提供的修补程序,没有任何改进.

任何想法为什么?

dll

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

如何使用Gmail API检索我的Gmail邮件?

我想要实现的目标:


我使用的是Gmail的API,基本上我想连接到我的Gmail帐户阅读我的邮件,收件箱类别,并获取每个邮件的基本信息(标题/主题,,,日期和发送者).

问题:


我正在尝试根据自己的需要调整这个用C#编写的Google示例,我正在寻找C#或Vb.Net的解决方案,无论如何.

(请注意,Google会针对不同的用户所示国家/地区显示不同的代码示例,因此该网页的代码可能与每个网站的代码相同,而Google的逻辑确实非常糟糕.)

我在下面的代码中遇到的问题是:

  • 我在lblInbox.MessagesTotal财产上得到一个空值.
  • msgItem.Raw 财产也总是空的.
  • 我还没有发现如何只解析INBOX类别中的消息.
  • 我还没有发现如何确定消息是读还是未读.
  • 我还没有发现如何确定邮件的基本信息(主题,来自,发送日期,发件人).

这就是我尝试过的,请注意,在调整Google的示例时,我认为该"user"参数应该是Gmail用户帐户名("MyEmail@GMail.com"),但我不确定它应该是那样.

Imports System.Collections.Generic
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading
Imports System.Threading.Tasks

Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Services
Imports Google.Apis.Util.Store
Imports Google.Apis.Gmail
Imports Google.Apis.Gmail.v1
Imports Google.Apis.Gmail.v1.Data
Imports Google.Apis.Gmail.v1.UsersResource

Public Class Form1 : Inherits Form

    Private Async Sub Test() Handles MyBase.Shown
        Await GmailTest()
    End Sub

    Public Async Function GmailTest() As Task
        Dim credential As …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net gmail google-api

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

VB5 DLL,如何从C#(.NET 4.5)调用该函数

我的问题很简单

VB.dll(VB5.0我猜)包括这些方法

Private Declare Function ffr_device_find Lib ".\ffr_32.dll" () As Boolean
Private Declare Function ffr_data_transceive_ex Lib ".\ffr_32.dll" (ByVal sp_sdata As String, ByVal sp_rdata As String) As Boolean
Run Code Online (Sandbox Code Playgroud)

在C#....(.NET 4.5)

[DllImport("FFR_32.dll", CallingConvention = CallingConvention.Cdecl)]
extern public static Boolean ffr_device_find();

[DllImport("FFR_32.dll", CallingConvention = CallingConvention.Cdecl)]
extern public static void ffr_data_transceive_ex([Out] string sp_sdata, [Out] string sp_rdata);
// FYI, I tried [Out], out, and ref but to no avail.
Run Code Online (Sandbox Code Playgroud)

第一个效果很好,

但第二个溢出了这个错误.

对PInvoke函数'ffr_data_transceive_ex'的调用使堆栈失衡.
这很可能是因为托管PInvoke签名与非托管目标签名不匹配.检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配.

FYI

这是来自VB的工作代码...(不是内部DLL源)

Dim st As String
Dim …
Run Code Online (Sandbox Code Playgroud)

c# vb.net interop

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