小编Miq*_*uel的帖子

在.NET中捕获非托管DLL异常

我正在使用一个具有抛出函数的非托管DLL std::exception.

我正在使用.NET DLL包装器,因此可以将其分发以用于.NET程序.

我希望能够从本机异常中捕获消息,但我得到的只是 System.Runtime.InteropServices.SEHException("External component has thrown an exception.")

有没有办法传播异常细节?也许我应该从本机DLL导出自定义异常?我该怎么做?

谢谢

原生DLL:

__declspec(dllexport) void __stdcall W32DLLFunc(int param) {
  if (param < 0) {
    throw new exception("Error: param must be > 0");
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

.net DLL:

[DllImport("nw32.dll", CharSet = CharSet::Auto)]
static void W32DLLFunc(int param);
Run Code Online (Sandbox Code Playgroud)

vb.net程序:

Try
  W32DLLFunc(-1)
Catch ex As Exception
  MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Run Code Online (Sandbox Code Playgroud)

.net c++ vb.net dll winapi

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

作为承诺表达res.send

我不明白发生了什么......

使用qpromises,这有效:

const deferred = q.defer();
deferred.resolve('Hellow');

const myPromise = deferred.promise;

router.get('/items', (req, res) => {
    myPromise.then((result) => res.send(result));
});
Run Code Online (Sandbox Code Playgroud)

但事实并非如此,如果请求永远不会结束,它会保持浏览器的状态:

router.get('/items', (req, res) => {
    myPromise.then(res.send);
});
Run Code Online (Sandbox Code Playgroud)

怎么了?

node.js express

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

Mongodb $ project:$ filter子数组

有一个项目(猫鼬)模式看起来像这样(简化到问题的重要性):

{
    brand: {
        name: String,
    },
    title: String,
    description: [{ lang: String, text: String }],
    shortDescription: [{ lang: String, text: String }],
    variants: {
        cnt: Number,
        attrs: [
            {
                displayType: String,
                displayContent: String,
                displayName: [{ lang: String, text: String }],
                name: String,
            },
        ],
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试按语言过滤项目,因此我构建了以下查询:

db.items.aggregate([
    { $match: { 'description.lang': 'ca', 'shortDescription.lang': 'ca' } },
    { $project: {
        'brand.name': 1,
        title: 1,
        description: {
            '$filter': {
                input: '$description',
                as: 'description',
                cond: { $eq: ['$$description.lang', 'ca'] }
            } …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query

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

jsdoc @字符在代码块中

我正在尝试为类似Module的功能编写文档:

/**
 * Usage:
 *
 * ```
 * @NgModule({
 *      imports: [
 *          BrowserModule,
 *          ...,
 *          ThisModule.forRoot({
 *              name: 'Name',
 *              version: '1.0',
 *      ],
 * }),
 * ```
 * 
 * @param config Service configuration parameters
 */
public static forRoot(config: SVConfig) {
Run Code Online (Sandbox Code Playgroud)

问题出在哪里@NgModule。我尝试过:

* ```
* &#064;NgModule
Run Code Online (Sandbox Code Playgroud)

似乎html实体在代码(```)外部运行良好,但在代码块内部却行不通(这有点奇怪,就像NgModule用粗体和换行表示)

也试过\@{@literal @}\u0064@@没有成功。我发现最友好的是(@)NgModule

有什么建议吗?

documentation jsdoc typescript visual-studio-code angular

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

带和不带斜杠的 nginx 位置

我想创建一个同时捕获http://example.comhttp://example.com/ 的位置以及另一个捕获其他所有内容的位置。第一个将提供静态 html,另一个用于 api 和其他东西。我试过这个:

location ~ /?$ {
    root /var/www/prod/client/www;
}

location ~ /.+ {
    # /sf/ask/1516405831/
    rewrite ^/(.*) /$1 break;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    proxy_connect_timeout       1s;
    proxy_send_timeout          30s;
    proxy_read_timeout          300s;
    send_timeout                300s;

    proxy_redirect off;
    proxy_pass http://backendPro;
}
Run Code Online (Sandbox Code Playgroud)

但不起作用。我在第一个位置尝试了很多选项,但是当它首先匹配时,第二个不匹配,反之亦然:

location / {
location ~ \/?$ {
location ~ ^/?$ {
Run Code Online (Sandbox Code Playgroud)

nginx nginx-location

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

AudioManager MODE_IN_CALL干扰

我正在使用AudioManager在拨打电话之前通过耳机播放声音,因此我使用AudioManager setMode(MODE_IN_CALL).

我没有任何问题,除了Galaxy S3,正确播放音乐后,铃声听起来非常扭曲,非常嘈杂.我读过setMode文档:

The audio mode encompasses audio routing AND the behavior of the telephony 
layer. Therefore this method should only be used by applications that replace
the platform-wide management of audio settings or the main telephony application.
In particular, the MODE_IN_CALL mode should only be used by the telephony
application when it places a phone call, as it will cause signals from the 
radio layer to feed the platform mixer.
Run Code Online (Sandbox Code Playgroud)

所以我怀疑可能有来自无线电层馈电平台混频器的信号.

所以我使用的代码是这样的:

am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
speakerWasOn = …
Run Code Online (Sandbox Code Playgroud)

android media-player android-audiomanager

5
推荐指数
1
解决办法
6653
查看次数

IWebbrowser2 IE =边缘和用户代理字符串

我正在开发一个使用IWebBrowser2嵌入式控件的winapi c ++程序.

我正在运行Windows 7 + IExplore 11所以当我打开IE11并调用我的服务器时,我得到了这个用户代理字符串:

Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Run Code Online (Sandbox Code Playgroud)

当从IWebBrowser2发出请求时,我得到这个UA字符串:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; Tablet PC 2.0; InfoPath.3; .NET4.0E)
Run Code Online (Sandbox Code Playgroud)

我已设法将此元标记附加到IWebBrowser2中加载的每个html页面(EDIT试图避免执行浏览器功能控制 - 请注意 - ):

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
Run Code Online (Sandbox Code Playgroud)


第一个问题:通过这样做,我是否为最新安装的IExplore版本启用了功能?

第二个问题:我在更改WebBrowser控件的用户代理时看到过如何更改IWebBrowser2中的UA字符串.

有没有办法在安全的用户权限下获取最新的IE版本UA字符串?(所以即使是我可以实现的大多数权限限制用户帐户).我试过ObtainUserAgentString()没有运气,总是得到"Mozilla/4.0 ... MSIE 7.0 ..."

c++ winapi user-agent webbrowser-control iwebbrowser2

5
推荐指数
1
解决办法
5676
查看次数

离子标签和侧面菜单历史记录

我想在侧面菜单应用程序中放置一个标签视图,但只是在应用程序的一些视图中.在应用程序中,有以下状态结构:

|--- Login                (login: menuContent)
|--- Orders list          (app.orders: menuContent)
    |--- Description      (app.orderTabs.description: orderTabs-description)
    |--- Products         (app.orderTabs.products: orderTabs-products)
         |--- New product (app.orderTabs.products.newProduct: orderTabs-products)
|--- Alerts list          (app.alerts: menuContent)
    |--- Description      (app.alertTabs: alertTabs-description)
    |--- Settings         (app.alertTabs: alertTabs-settings)
Run Code Online (Sandbox Code Playgroud)

每个条目| --- ViewTitle(状态:离子导航视图名称)

menu.html:

<ion-side-menus enable-menu-with-back-views="false">
  <ion-side-menu-content>
    <ion-nav-bar class="bar-stable">
      <ion-nav-back-button>
      </ion-nav-back-button>

      <ion-nav-buttons side="left">
        <button class="button button-icon button-clear ion-navicon" menu-toggle="left">
        </button>
      </ion-nav-buttons>      
    </ion-nav-bar>
    <ion-nav-view name="menuContent"></ion-nav-view>
  </ion-side-menu-content>

  <ion-side-menu side="left">
    <ion-header-bar class="bar-stable">
      <h1 class="title">Menu</h1>
    </ion-header-bar>
    <ion-content>
      <ion-list>
        <ion-item nav-clear menu-close href="#/app/orders">
          Orders list
        </ion-item>
        <ion-item nav-clear menu-close …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui-router ionic-framework

5
推荐指数
1
解决办法
2196
查看次数

第一个承诺完成后,Angular $ q.all被调用

我正在尝试使用$ q.all等待所有承诺都解决但是在第一个承诺完成后调用它!

我做错了什么?

function sendAudits(audits) {
    var promises = [];

    $scope.sendAudits = {
        progress: 0
    };
    angular.forEach(audits, function (audit, idAudit) {
        promises.push(saveAudit(audit));
    });

    $q
        .all(promises)
        .then(function (data) {
            console.log(data);
        }, function (errors) {
            console.log(errors);
        });
}

function saveAudit(audit) {
    var filename = audit.header.id + ".txt";

    return $http({
        method: 'PUT',
        url: '/audits/audits.php?filename=' + encodeURIComponent(filename),
        data: AuditSvc.getPlainAudit(audit.header.id)
    }).finally(function () {
        $scope.sendAudits.progress += 1;
        console.log("FINALLY: " + audit.header.id);
    });
}
Run Code Online (Sandbox Code Playgroud)

编辑

更深入地分析问题,当某些响应出错时会出现这种情况.例如,当服务器返回时header("HTTP/1.0 418 I'm A Teapot: " . $filename);,客户端控制台将如下所示:

PUT http://localhost:8182/audits/audits.php?filename=1.txt …
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs angular-promise

5
推荐指数
1
解决办法
2651
查看次数

使用ionic/cordova的原生Admob广告

我实际上已经成功地在我的应用程序中实现了横幅广告和插页式广告,但是我希望能够采用一种不那么具有侵入性的方式来制作一些额外的广告来保持灯光效果.

我真的想在我的cordova /离子项目中通过admob实现原生广告.问题是我无法使用SDK而且我无法对应用程序中的adsense进行逆向工程,因为这违反了策略.

我一直在寻找Stack的答案,但唯一的想法是我真正看到的是横幅和插页式广告的实施帮助(我很擅长).我的问题是,在cordova /离子项目中使用admob实现原生广告有没有运气?将下方链接到"原生广告",以便我们都在同一页面上.基本上它意味着在主进料中而不是浮动在底部或弹出以全屏显示.

AdMob原生广告

提前致谢!

admob cordova firebase ionic-framework cordova-admob

5
推荐指数
1
解决办法
2908
查看次数