小编Ric*_*ard的帖子

强制VBS使用cscript而不是wscript运行

什么是stackoverflow批准(因此正确)方法强制VBS使用cscript而不是wscript运行 - 无论用户尝试什么?

一个快速的谷歌搜索显示了大量的例子,但其中一些只是不起作用,而那些通常不能处理它可能已经参数运行的事实,所以我很想知道最好的方法是什么.

这是一个不处理参数的例子:

sExecutable = LCase(Mid(Wscript.FullName, InstrRev(Wscript.FullName,"\")+1))
If sExecutable <> "cscript.exe" Then
  Set oShell = CreateObject("wscript.shell")
  oShell.Run "cscript.exe """ & Wscript.ScriptFullName & """"
  Wscript.Quit
End If
Run Code Online (Sandbox Code Playgroud)

我很欣赏这可能很容易修改以处理参数,但意识到这可能不是解决问题的最佳方法.

背景:我正在编写一个脚本,可以通过双击或(很可能)从DOS批处理文件或作为计划任务运行.它可以包含一个或多个可选的命令行参数.

vbscript arguments wsh

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

我可以遍历包含子文件夹的文件夹中的所有Outlook电子邮件吗?

我有一个文件夹,其中包含许多电子邮件和子文件夹.在这些子文件夹中有更多电子邮件.

我想写一些VBA,它将遍历某个文件夹中的所有电子邮件,包括任何子文件夹中的电子邮件.我们的想法是从每封电子邮件中提取SenderEmailAddressSenderName使用它.

我尝试将文件夹导出为仅包含这两个字段的CSV,虽然这有效,但它不支持导出子文件夹中保存的电子邮件.因此需要编写一些VBA.

在我重新发明轮子之前,是否有人有任何代码片段或链接到网站,给定文件夹名称,显示如何获取MailItem该文件夹后续子文件夹中的每个电子邮件的对象?

outlook vba mailitem outlook-object-model outlook-vba

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

通过Outlook约会项快速迭代

我已经编写了一个宏来迭代用户日历,并修改了对某个critera有用的条目.

问题是,当日历非常大时,这需要很长时间.我似乎无法过滤约会,因为oAppointmentItems似乎在创建条目时存储条目 - 这不一定与它们开始时的顺序相同.

我正在使用的代码是这样的:

Dim oOL As New Outlook.Application
Dim oNS As Outlook.NameSpace
Dim oAppointments As Object
Dim oAppointmentItem As Outlook.AppointmentItem

Set oNS = oOL.GetNamespace("MAPI")
Set oAppointments = oNS.GetDefaultFolder(olFolderCalendar)

For Each oAppointmentItem In oAppointments.Items

    DoEvents
    ' Something here
Next

Set oAppointmentItem = Nothing
Set oAppointments = Nothing
Set oNS = Nothing
Set oOL = Nothing
Run Code Online (Sandbox Code Playgroud)

没有删除DoEvents(这只意味着Outlook似乎锁定用户)有什么办法可以通过应用某种过滤器加快速度?例如,将来开始的约会.

iteration outlook vba calendar outlook-vba

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

如何从Windows Media Center开始菜单中的自定义条带和磁贴启动可执行文件?

我在Windows Media Center中添加了自定义条带和磁贴.但是,当我选择磁贴时,我选择的应用程序(notepad.exe)不会启动,我收到以下错误:

[name]程序已停止响应,您将返回Windows Media Center.

我需要在XML中进行哪些更改才能 notepad.exe启动而不是显示此错误消息?


更多详情

使用此博客文章和Windows开发人员中心的此页面提供的示例,我创建了以下XML文件(称为dummy.xml):

<application title="appTitle" id="{81E3517C-A5F3-4afa-9E37-81BF9A6A99FE}">
    <entrypoint id="{760A3CF3-6675-444b-AA31-B2A3F94AD9A3}"
        addin="Microsoft.MediaCenter.Hosting.WebAddIn,Microsoft.MediaCenter"
        title="entrypointTitle"
        description="Description"
        run="notepad.exe">
        <category category="MyCompany\MyApplication1"/>
    </entrypoint>  
</application>
Run Code Online (Sandbox Code Playgroud)

和以下注册表文件(称为dummy.reg):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Start Menu\Applications\{81E3517C-A5F3-4afa-9E37-81BF9A6A99FE}]
"Title"="appTitle"
"Category"="MyCompany\\MyApplication1"
"OnStartMenu"="True"
"TimeStamp"=dword:0c7e59de
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令安装它们:

%windir%\ehome\registermceapp.exe dummy.xml
regedit.exe /s dummy.reg
Run Code Online (Sandbox Code Playgroud)

当我运行Windows Media Center时,我可以看到条带和磁贴 - 但是当我选择磁贴时,我收到一条错误消息:

[tile name]程序已停止响应,您将返回到Windows Media Center.

根据此页面,entrypoint元素具有以下属性run:

一个字符串,指定本地计算机上可执行文件的完整路径或相对路径.

我需要做什么不同的XML文件和注册表项notepad.exe才能运行,而不是显示错误消息?

windows windows-media-center

11
推荐指数
1
解决办法
182
查看次数

在VBScript中查找我自己的进程ID

我正在使用以下代码片段来确定我的vbscript正在运行的进程ID:

On Error Resume Next
Dim iMyPID : iMyPID = GetObject("winmgmts:root\cimv2").Get("Win32_Process.Handle='" & CreateObject("WScript.Shell").Exec("mshta.exe").ProcessID & "'").ParentProcessId
If Err.Number <> 0 Then Call Handle_Error(Err.Description)
On Error Goto 0
Run Code Online (Sandbox Code Playgroud)

在我的Windows 7(32位)计算机上,大约90%的时间都可以运行,并且iMyPID包含当前运行脚本的进程ID.但是,有10%的时间Handle_Error会被错误消息" SWbemServicesEX:Not found " 调用.

最近运行Windows 7(64位)的其他人报告Handle_Error总是被错误消息" Out of memory " 调用.这似乎是一个疯狂的错误消息,只是为了找到你自己的进程ID!

任何人都可以推荐更好的方法吗?

vbscript pid

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

是否可以在Outlook启动时运行VBA功能?

我想在Outlook启动后立即运行VBA功能.这是可能的,如果是这样,我需要做什么?我在Google上的搜索失败了.

我不介意会弹出安全警报.

outlook vba startup

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

Google Simple API Access - 需要授权,但如何?

我正在尝试编写一个独立的perl应用程序,列出存储在Google Tasks中的所有任务.我被引导相信我可以使用谷歌所谓的"简单API访问",因为它只是我的任务而且它是只读的.

所以我做了以下事情:

#!perl
use LWP;
my $browser = LWP::UserAgent->new;
my $list = "Iyrhxu8sRTVOhE4hUBr4W1kwNTI6MDow";
my $key = "<api key removed>";
my $url = "https://www.googleapis.com/tasks/v1/lists/$list/tasks?pp=1&key=$key";
print $browser->get($url)->content;
Run Code Online (Sandbox Code Playgroud)

作为回报,我得到:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道它目前需要什么授权.我尝试用以下代码替换最后一行:

my $auth = "...";
print $browser->get($url, "Authorization", $auth)->content;
Run Code Online (Sandbox Code Playgroud)

并使用API​​控制台中列出的Google列出的客户端ID,电子邮件地址和客户端密码 - 但他们都给了Invalid Credentials.

有人可以帮忙吗?

google-api

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

如何让Microsoft Script Debugger与64位Windows 7一起使用?

我正在尝试调试一些VBScript,通常我会安装古老的(但是免费的)Microsoft Script Debugger,它可以在32位XP和32位Windows 7上正常工作.

但是,在64位Windows 7上安装它之后,//d或者//x(或者甚至两者)都不再实际调用调试器.该脚本将很乐意运行,就像我从未提供过该选项一样 - 但这不是很有用.

有什么办法可以让它运作起来吗?我只是偶尔使用它来刮擦我自己的痒,所以我无法证明购买一些商业工具作为替代品.

debugging vbscript 64-bit windows-7

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

确定Windows上的Perl中是否正在使用文件

我正在编写一些Perl,它可以在Windows Media Center上录制电视节目,并根据特定条件移动/重命名/删除它们.

由于Perl运行相当频繁,我想清楚地确定文件是否正在使用(换句话说,节目正在被录制过程中),所以我可以避免对它做任何事情.

我当前的方法查看文件的状态(使用"stat")并在5秒后再次比较它,如下所示:

sub file_in_use
{
  my $file = shift;

  my @before = stat($file);
  sleep 5;
  my @after = stat($file);

  return 0 if ($before ~~ $after);
  return 1;
 }
Run Code Online (Sandbox Code Playgroud)

它似乎有效,但我很有意思,可能有更好,更清洁的方法来做到这一点.

你能给些建议么?

windows testing perl winapi file

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

显示对话框以允许用户在VBA中选择Outlook文件夹

我写了一些Outlook VBA,需要用户选择一个邮件文件夹(来自他们的邮箱或外部PST).

目前,他们必须直接在代码中编辑路径 - 这不是远程用户友好或高效的.

有谁知道如何让对话框出现,允许用户浏览所有可用的文件夹和子文件夹,然后选择一个?

奖励积分如果它可以仅限于邮件文件夹,但它不是必需的.

outlook-vba

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

在 Visual Basic .NET 中访问 MTP/WPD 设备

是否有任何可用于 VB.net 的库使我能够轻松访问 MTP 设备?我希望能够找出连接了哪些设备,列出它们的内容并将文件复制到它们或从它们复制文件。

到目前为止,我看到的所有内容(在 Stack Overflow、Microsoft 网站上或通过简单的 Google 搜索)都是使用 C++、C# 或其他非 VB.net 语言编写的。Microsoft 文档完全超出了我的理解。

结果,除非我打算学习一门新语言,否则一切都不是入门。

我确实找到了MTPSharp,这给了我希望。但是没有文档,它似乎没有完全实现,我尝试做某些事情会返回一个异常,作者告诉我它是针对我不应该使用的旧 API 编写的,并且无法帮助我解决我有问题。

想要使用VB.net的人真的没有希望吗?

vb.net dll wpd mtp

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