桌面快捷方式的位置存储在哪里?

2023-12-04

Windows桌面快捷方式的位置存储在哪里?

我问的是屏幕职位图标的一部分,而不是实际的图标本身。我知道图标本身存储在各种 DLL、EXE 等中。这些位置显然存储在某些非易失性存储中,因为它们在重新启动时仍然存在。

我的最终目标是编写一个应用程序来显示,并可以选择在桌面上重新排列图标。
我知道这是可能的,因为许多可用的应用程序都这样做(例如“WinTidy”)。

我发现很多关于“Windows Shell Bags”的讨论。关于这些的一篇有趣的文章位于http://williballethin.com.forensics/shellbags,但这仅解决目录不是捷径。这些位于不同地方的注册表中,包括

`HKEY_CURRENT_USER/Software/Microsoft/Windows/Shell/Bags/1/Desktop`  
`HKEY_USERS/.DEFAULT/Software/Microsoft/Windows/Shell/Bags/1/Desktop`  

我编写了一个程序来提取这些,但键值的格式难以理解。

有人知道它们存储在哪里以及如何存储吗?


更新 2020 年 6 月 3 日
++++++++++++++++++++++++++++++++++++++++++
我刚刚切换到Win10 64位机器,发现下面的解决方案不再起作用。我相信是因为桌面内部发生了变化。我想出了如何做到这一点。请参阅本答案末尾的“WIN10 附录”。
++++++++++++++++++++++++++++++++++++++++++

我终于弄清楚如何做我想做的事(显示和重新排列桌面图标)。我最初的问题涉及定位、读取和写入存储图标信息的文件,但这是not一个有用的方法。这是我学到的:

Explorer.exe 在覆盖整个桌面的巨大 ListView 中显示桌面项目,其中 ListView 项目对应于每个可见图标。启动时,资源管理器从一些神秘的文件中读取信息并填充 ListView。退出时,它会从 ListView 重写该文件。所以修改该文件会not帮助,因为它会在退出时被覆盖。

操作桌面项目的正确方法是直接操作ListView中的项目。任何更改在更改时都会立即可见,并在退出时保存。要访问这些项目,我们可以使用多个 Windows 消息:LVM_GETITEM、LVM_GETITEMCOUNT、LVM_GETITEMPOSITION 和 LVM_SETITEMPOSITION。这些消息使用起来相当简单,但有一个问题:有些消息需要指向参数结构的指针。这些结构必须位于探险家的地址空间not我的应用程序,所以需要一些技巧。以下是具体操作方法。我以 LVM_GETITEMPOSITION 为例,它需要一个指向 POINT 结构的指针。

  • 在您的应用程序中声明 POINT 结构。

  • 分配一个镜像结构浏览器的地址空间使用 API VirtualAllocEx()。

  • 将 LVM_GETITEMPOSITION 发送到资源管理器,指定指向此结构的指针。

  • 使用 API ReadProcessMemory() 将结果读回到应用程序的 POINT 中。该函数可以跨不同地址空间读取内存。

我已经对这些操作进行了原型设计,它们按照我的意愿工作。我的代码很长,但我会在清理后立即发布摘录。

更新 10/4/2019 ------------------------------------

代码摘录

创建了一组常用的实用函数,使代码更加紧凑和可读。它们被命名为“exp*()”并包含在末尾。可以在以下位置找到参考:http://ramrodtechnology.com/explorer。这里的许多基本技术都是无耻地窃取自https://www.codeproject.com/Articles/5570/Stealing-Program-s-Memory

Setup

// COMMONLY USED VARS
HANDLE hProcess;        // explorer process handle
HWND hWndLV;        // explorer main window

// SET UP CONVENIENCE VARS
hProcess = expGetProcessHandle();   // get explorer process handle
if( !hProcess ) exit( 1 );
hWndLV = expGetListView();      // get main ListView of Desktop
if( !hWndLV   ) exit( 1 );

打印所有项目名称的功能

//@ Process a list view window and print item names
int
printAllNames()
{
    int ok,icount,indx;
    LVITEM item;                    // point in app space
    LVITEM *_pitem;                 // point in exp space
    char text[512];
    char *_ptext;
    int nr,nwrite;              // count of bytes read/written
    
    printf( "\n" );

    // ALLOC ITEMS IN EXP SPACE
    _pitem = expAlloc( sizeof(LVITEM) );
    _ptext = expAlloc( sizeof(text  ) );


    printf( "  NAME\n" );
    printf( "  ==================================\n" );
    icount = expGetItemCount();
    for( indx=0; indx<icount; indx++ ) {            // for each item in LV

      // SETUP ITEM IN EXP SPACE
      memset( &item, 0, sizeof(LVITEM) );   // preclear
      item.iItem      = indx;       // index of item to read
      item.iSubItem   = 0;          // sub index (always 0)
      item.mask       = LVIF_TEXT;      // component to read
      item.pszText    = _ptext;     // buffer to recv text
      item.cchTextMax = sizeof(text);   // size of buffer

      // WRITE ITEM REQ TO EXP SPACE
      ok = WriteProcessMemory( hProcess, _pitem, &item, sizeof(LVITEM), &nwrite );

      // SEND MESSAGE TO GET ITEM INTO EXP SPACE
      ok = SendMessage( hWndLV, LVM_GETITEM, indx, (LPARAM)_pitem );

      // READ EXP TEXT INTO APP SPACE
      memset( &item, 0, sizeof(LVITEM) );
      ok = ReadProcessMemory( hProcess, _pitem, &item, sizeof(POINT), &nr );
      ok = ReadProcessMemory( hProcess, _ptext, &text, sizeof(text),  &nr );

      // PRINT RESULT
      printf( "  %s\n", text );
    }
    ok = expFree( _pitem );
    ok = expFree( _ptext );

    return( TRUE );
    //r Returns TRUE on success, FALSE on error
}  

打印所有项目位置的功能

//@ Process a list view window and print position
int
printAllPositions()
{
    int ok,icount,indx,nr;
    POINT pt;                   // point in app space
    POINT *_ppt;                    // point in exp space
    
    icount = expGetItemCount();

    _ppt = expAlloc( sizeof(POINT) );
    if( !_ppt ) return( FALSE );

    printf( "   X    Y\n" );
    printf( "---- ----\n" );
    for( indx=0; indx<icount; indx++ ) {        // for each item in LV
      ok = SendMessage( hWndLV, LVM_GETITEMPOSITION, indx, (LPARAM)_ppt );
      ok = ReadProcessMemory( hProcess, _ppt, &pt, sizeof(POINT), &nr );
      printf( "%4d %4d\n", pt.x, pt.y );
    }

    ok = expFree( _ppt );

    return( TRUE );
    //r Returns TRUE on success
}

移动项目的功能
请参阅下面的“expSetItemPosition”。更新日期:2019 年 10 月 6 日

资源管理器实用功能

// EXPLORER UTILITY FUNCTIONS

//@ Allocate a block of memory in explorer space
void *
expAlloc(
  int size)     // size of block
{
    void *p;

    p = VirtualAllocEx( 
        hProcess,
        NULL,
        size,
        MEM_COMMIT, 
        PAGE_READWRITE );
    return( p );
    //r Returns addr of memory in EXPLORER space or NULL on error
}

//@ Free virtual memory in EXPLORER space
int
expFree(
  void *p)  // pointer to free
{
    int ok;
    ok = VirtualFreeEx( hProcess, p, 0, MEM_RELEASE );
    return( ok );
    //r Returns TRUE on success, else FALSE
}

static int  aBiggest;       // biggest area so far
static HWND hWndBiggest;    // hWnd with biggest area

//@ Find main list view of explorer
HWND
expGetListView()
{
    //n Approach: Enumerate all child windows of desktop and find largest.
    //n This will be the main explorer window.

    HWND hWndDesktop;
    hWndDesktop = GetDesktopWindow();
    if( !hWndDesktop ) return( NULL );

    aBiggest    = -1;       // init
    hWndBiggest = NULL;     // init
    EnumChildWindows( hWndDesktop, CallbackDesktopChild, 0 );
    
    return( hWndBiggest );
    //r Returns hWnd of largest explorer list view
}

//@ Callback for EnumChildWindows
BOOL CALLBACK CallbackDesktopChild(
  HWND hWnd,
  LPARAM dwUser)
{
    //n Get size of child. If biggest, save hWnd.

    int i,w,h,a;
    char classname[MAXPATH+1];
    RECT rect;

    i = GetClassName( hWnd, classname, MAXPATH );   // get class
    if( stricmp( classname, "SysListView32" ) ) {   // not a list view?
      return( TRUE );               // skip it
    }

    // CALC SIZE
    i = GetWindowRect( hWnd, &rect );
    w = rect.right - rect.left;
    h = rect.bottom - rect.top;

    // CHECK IF BIGGEST
    a = w * h;
    if( a > aBiggest ) {    // is biggest?
      aBiggest    = a;
      hWndBiggest = hWnd;
    }

    return( TRUE );     // TRUE to continue enumeration
}


//@ Get process handle of explorer.exe
HANDLE
expGetProcessHandle()
{
    //n Approach: take process snapshot and loop through to find "explorer.exe"
    //n Needs tlhelp32.h and comctl32.lib
    
    int i,stat;
    PROCESSENTRY32 pe;
    HANDLE hSnapshot;
    char *name;
    HANDLE h;

    // TAKE A SNAPSHOT
    hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
    if( !hSnapshot ) return( NULL );

    // LOOP THROUGH PROCESSES AND FIND "explorer.exe"
    for( i=0;;i++ ) {
      pe.dwSize = sizeof( PROCESSENTRY32 );
      if( i == 0 ) stat = Process32First( hSnapshot, &pe );
      else         stat = Process32Next ( hSnapshot, &pe );
      if( !stat ) break;                // done or error?
      name = pe.szExeFile;
      if( !stricmp( name, "explorer.exe" ) ) {  // matches?
        h = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID ); 
        return( h );
      }
    }

    return( NULL );
    //r Returns explorer process handle or NULL on error
}

//@ Get count of items in explorer list view
int
expGetItemCount()
{
    int count;

    count = SendMessage( hWndLV, LVM_GETITEMCOUNT, 0, 0 );
    return( count );
    //r Returns count of item
}

//@ Get position of list view icon by index
int
expGetItemPosition(
  int indx, // index of item
  int *x,   // ptr to int to recv x
  int *y)   // ptr to int to recv y
{
    int i,ok,icount;
    char classname[MAXPATH+1];
    POINT pt;                   // point in app space
    POINT *_ppt;                    // point in exp space
    int nr;                     // count of bytes read
    //int w,h;

    i = GetClassName( hWndLV, classname, MAXPATH );

    // GET COUNT OF ITEMS IN LIST VIEW
    icount = expGetItemCount();
    if( indx < 0 || indx >= icount ) return( FALSE );

    // ALLOC POINT IN EXP SPACE
    _ppt = expAlloc( sizeof(POINT) );
    if( !_ppt ) return( FALSE );

    // SEND MESSAGE TO GET POS INTO EXP SPACE POINT
    ok = SendMessage( hWndLV, LVM_GETITEMPOSITION, indx, (LPARAM)_ppt );
    if( !ok ) return( FALSE );

    // READ EXP SPACE POINT INTO APP SPACE POINT
    ok = ReadProcessMemory( hProcess, _ppt, &pt, sizeof(POINT), &nr );
    if( !ok ) return( FALSE );

    ok = expFree( _ppt );
    if( !ok ) return( FALSE );

    if( x ) *x = pt.x;
    if( y ) *y = pt.y;

    //r Returns TRUE on success
    return( TRUE );  
}  

//@ Move item
int
expSetItemPosition(
  char *name,   // icon name
  int x,        // new x coord
  int y)        // new y coord
{
    int ok,indx;
    LPARAM lParam;

    indx = expGetItemIndex( name );
    if( indx < 0 ) return( FALSE );

    lParam = MAKELPARAM( x, y );
    ok = SendMessage( hWndLV, LVM_SETITEMPOSITION, indx, lParam );
    if( !ok ) return( FALSE );

    return( TRUE );
    //r Returns TRUE on success
}

WIN10 附录 2020年6月19日
++++++++++++++++++++++++++++++++++++

在Win10下,解决方案要复杂得多。您必须使用各种 COM 对象和接口,例如IShellWindows 等(天哪,我讨厌 COM)。我没有创建一个库,而是在下面提供了一个完整的工作程序。我使用 MSVC 2019 编译了此文件。为了清楚起见,省略了错误检查(但您应该这样做)。

//  icons.cpp - Display (and optionally move) desktop icons

#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <ShlObj.h>
#include <atlbase.h>

int
main(int argc,char** argv)
{
    CComPtr<IShellWindows> spShellWindows;
    CComPtr<IShellBrowser> spBrowser;
    CComPtr<IDispatch> spDispatch;
    CComPtr<IShellView> spShellView;
    CComPtr<IFolderView>  spView;
    CComPtr<IShellFolder> spFolder;
    CComPtr<IEnumIDList>  spEnum;
    CComHeapPtr<ITEMID_CHILD> spidl;
    CComVariant vtLoc(CLSID_ShellWindows);
    CComVariant vtEmpty;
    STRRET str;

    int count=0;
    HRESULT hr;
    long lhWnd;

    // INITIALIZE COM
    CoInitialize(NULL);
    
    // GET ShellWindows INTERFACE
    hr = spShellWindows.CoCreateInstance(CLSID_ShellWindows);

    // FIND WINDOW
    hr = spShellWindows->FindWindowSW(
        &vtLoc, &vtEmpty, SWC_DESKTOP, &lhWnd, SWFO_NEEDDISPATCH, &spDispatch);

    // GET DISPATCH INTERFACE
    CComQIPtr<IServiceProvider>(spDispatch)->
      QueryService(SID_STopLevelBrowser, IID_PPV_ARGS(&spBrowser));

    spBrowser->QueryActiveShellView(&spShellView);
    spShellView->QueryInterface(IID_PPV_ARGS(&spView) );

    hr = spView->GetFolder(IID_PPV_ARGS(&spFolder));

    // GET ENUMERATOR
    spView->Items(SVGIO_ALLVIEW, IID_PPV_ARGS(&spEnum));    // get enumerator

    // ENUMERATE ALL DESKTOP ITEMS
    for (; spEnum->Next(1, &spidl, nullptr) == S_OK; spidl.Free()) {
      // GET/PRINT ICON NAME AND POSITION
      char* name;
      POINT pt;
      spFolder->GetDisplayNameOf(spidl, SHGDN_NORMAL, &str);
      StrRetToStr(&str, spidl, &name);
      spView->GetItemPosition(spidl, &pt);
      printf("%5d %5d \"%s\"\n", pt.x, pt.y, name);

#define MOVE_ICON
#ifdef MOVE_ICON
      // OPTIONAL: MOVE *SINGLE* SELECTED ITEM
      {
        if( !_stricmp(name, "ICON_NAME_TO_MOVE") ) {
        PCITEMID_CHILD apidl[1] = { spidl };
        int numitems = 1;
        // SET pt TO NEW POSITION HERE
        hr = spView->SelectAndPositionItems(numitems, apidl, &pt, 0);
        }
      }
#endif

      count++;
    }
    CoUninitialize();           // release COM

    fprintf(stderr, "enumerated %d desktop icons\n", count);
    fprintf(stderr, "Press any key to exit...\n");
    _getch();
    exit(0 );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

桌面快捷方式的位置存储在哪里? 的相关文章

  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • C程序调用shell脚本

    我有一个小型 C 程序 调用 shell 脚本 myScript sh 我得到的 ret 值为 256 请帮助我了解系统调用出了什么问题 int main int ret ret system myScript sh ret gt gt r
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • 什么是WINVER?

    我正在查看一些代码 他们有这一行 define WINVER 0x0501 in stdafx h文件 为什么需要定义WINVER 它如何影响您的代码 有人可以解释一下吗 WINVER 确定构建应用程序所需的最低平台 SDK 这反过来又会在
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • CPU 周期与总 CPU 时间

    在 Windows 上 GetProcessTimes 和 QueryProcessCycleTime 可用于获取应用程序所有线程的总计 我期望 显然是天真地 找到总周期数和总处理器时间 用户 内核 之间的比例关系 当转换为相同的单位 秒
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • 如何在Windows服务器上将node.js文件作为后台进程运行?

    我正在创建一个 node js 项目并将其上传到我的 Windows 服务器 以为移动应用程序提供 API 服务 当我打开命令提示符并键入 node app js 它运行正常 但是当我关闭命令提示符时 我的 Node js 服务器停止运行
  • 如何查看正在运行的 tcsh 版本?

    如何查看我的 UNIX 终端中运行的 tcsh 的当前版本 看着那 这version多变的 echo version tcsh 6 14 00 Astron 2005 03 25 i386 intel linux options wide
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • sqlite3-ruby gem:无法构建 gem 本机扩展

    Update 看看这个后续问题 Windows 上的 Gem 更新 它坏了吗 https stackoverflow com questions 134581 gem update on windows is it broken 在 Win
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • 已达到网络 BIOS 命令限制

    我的 ASP Net 应用程序从另一台 Windows 服务器上的共享文件夹获取文件 当请求增加时 我收到以下错误 The network BIOS command limit has been reached 我已按照以下步骤操作微软 K
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not

随机推荐

  • 简单的日期格式化程序返回不正确的格式。格式化后扣除日期[重复]

    这个问题在这里已经有答案了 我正在尝试使用 SimpleDateFormat 解析日期 日期解析成功但是输出日期格式不正确或者减去了一年 使用SimpleDateFormat的Date方法如下所示 public Date parseDate
  • 具有可更新 JProgressBar 的 Java Swing 线程

    首先 我最近一直在使用 Java 的并发包 但我发现了一个我遇到的问题 我想要一个应用程序并且该应用程序可以有一个SplashScreen带有状态栏和其他数据的加载 所以我决定使用SwingUtilities invokeAndWait c
  • 为什么我的对象打印了两次?

    当我在 irb 或 Rails 中时 我使用以下命令创建一些迭代each 我在终端或浏览器中再次打印整个结构 例子 a 1 2 3 4 a each do number puts n end irb 终端或浏览器中的结果 1 2 3 4 g
  • 调用 object.method() 和 Class.method(object) 时幕后发生了什么?

    我对 Python 还很陌生 正在处理 OOP 我对何时使用对方法和类的调用有点困惑 下面的示例代码输出平均值 但是我很好奇什么时候从类调用与从现实世界的角度使用方法调用 我很确定这只是我可能尚未解决的问题 但对于何时使用其中一个而不是另一
  • 最小购物车金额(WooCommerce 中的几种特定产品除外)

    我正在使用以下代码 Woocommerce 中除特定产品外的最低购物车金额 在我的 php 中 允许覆盖 Woocommerce 最低购物车价值 130 美元 工作正常 但仅适用于一种定义的产品 在这种情况下product id 2649
  • 在 Firebase 中过滤多个子属性的产品

    我最近询问如何根据产品的子属性过滤产品 请参阅 根据 Firebase 中的子项过滤产品 回顾一下我的结构如下 products product1 author 12345 title Awesome category catA descr
  • 如何正确关闭和打开 Hibernate 会话?

    我有以下方法 每隔几秒插入一大批记录 运行一段时间后 我收到如下错误 错误 通信链路故障 从服务器成功接收到的最后一个数据包是 523 毫秒前 最后一个成功发送到服务器的数据包是 8 毫秒前 2013 年 5 月 16 日上午 9 48 3
  • Doctrine2 最佳实践,实体应该使用服务吗?

    我不久前问过类似的问题 使用数据映射器模式 实体 域对象 是否应该了解映射器 然而 它是通用的 并且我对如何使用 Doctrine2 完成一些事情非常感兴趣 这是一个简单的示例模型 每个Thing可以有一个Vote from a User
  • 如何仅在脚本运行期间设置环境变量?

    在 Linux 上 乌班图11 04 Natty Narwhal 在 Bash 中 是否可以临时设置一个仅在脚本运行期间与普通变量不同的环境变量 例如 在 shell 脚本中 通过将 HOME 临时设置为当前工作目录中的文件夹 然后启动该应
  • Xampp 1.7.4 和 PHP 5.3.5(已弃用的警告)

    我刚刚将 Xampp 安装升级到 1 7 4 我有一个工作脚本 jquery 调用 PHP 脚本并显示返回值 升级后 我的 jquery 正确获取了结果 但除了结果之外 还返回了一些警告 因此停止我的脚本以显示结果 我签入了 firebug
  • 如何向 POI 4.0.1 中的 XDDFChart 添加带有第二轴的第二条线?

    我无法在现有图表的第二个轴 右轴 上添加线条 有没有办法通过 POI 4 0 0 1 中图表的新实现来做到这一点 Desired output will look like this A simple excel chart with 2
  • 如何将多个 OpenAPI 3 规范文件组合在一起?

    我想合并使用 OpenAPI 3 规范编写的 API 规范 该规范当前分为多个文件 这些文件相互引用 ref 我怎样才能做到这一点 我最近写了一个快速工具来做到这一点 我称之为 openapi merge 有一个库和一个关联的 CLI 工具
  • 无法在 google cloud ml 上进行预测,而相同的模型正在本地计算机上运行

    我正在尝试使用谷歌云中的张量流库训练机器学习模型 创建存储桶后 我可以在云中训练模型 当我尝试使用现有模型进行预测时 我遇到了这个问题 代码和数据可以在以下 Github 目录中找到 https github com terminator1
  • 使用 createdesktop api 创建桌面的屏幕截图

    我正在使用 createdesktop api 创建桌面 我想截取屏幕截图或发送输入鼠标 键盘而不向用户显示桌面 有关如何实现此功能的任何想法 我发现的简短答案是你不能 您无法拍摄非活动桌面的屏幕截图 因为没有绘画调用 因为没有可见的窗口可
  • \s 在 C++ 正则表达式中不起作用

    我昨天开始学习正则表达式 在学习时 我看到 s 用于空白字符 但是 由于某种原因 每当我输入空格时 C 中都不会检测到它 Code include
  • 使用维恩图来描述表为集合的 SQL 连接是否合适?

    网上搜索SQL join可以找到下图 我们可以将其解释为维恩图 通过以下方式 标记为表 A 的圆圈是表 A 中的记录集 标记为表 B 的圆圈是表 B 中的记录集 集合的交集表示内连接 也称为 SQL 中的连接 动机 所示的图表在网络上以各种
  • 如何计算mysql中唯一的列值

    这是我的数据 cardNo userName tablename hours date 1 a a 12 12 06 2015 1 a a 5 11 06 2015 2 b b 3 15 06 2015 1 a a 8 12 06 2015
  • 如何在 angularjs 下拉元素上正确使用 ng-change ?

    我的模板中有这个下拉列表 div class col lg 5 col md 5 col sm 5 col xs 5 div class input group input group sm div div
  • dd-mm-yyyy hh:mm 的正则表达式

    我想查看日期dd mm yyyy hh mm格式 现在我正在使用 0 1 9 1 d 2 d 3 01 0 1 9 1 d 2 d 3 01 19 20 d 2 匹配日期的正则表达式dd mm yyyy format 但我想检查一下dd m
  • 桌面快捷方式的位置存储在哪里?

    Windows桌面快捷方式的位置存储在哪里 我问的是屏幕职位图标的一部分 而不是实际的图标本身 我知道图标本身存储在各种 DLL EXE 等中 这些位置显然存储在某些非易失性存储中 因为它们在重新启动时仍然存在 我的最终目标是编写一个应用程