Tag: winapi

如何获取MSVC中的成员函数指针?

我不会深入Excel的细节,我基本上从这个例子的代码: C ++应用程序自动化Excel(CppAutomateExcel) solution1.cpp 所以我已经在MSVC中试过这个代码,它编译: class foo { public: virtual void bar(){} }; int main() { void (foo::*p)() = &foo::bar; } 但是在Excel中捕获移动函数地址的类似代码不起作用: int main() { Excel::_ApplicationPtr spXlApp; HRESULT hr = spXlApp.CreateInstance(__uuidof(Excel::Application)); Excel::WorkbooksPtr spXlBooks = spXlApp->Workbooks; Excel::_WorkbookPtr spXlBook = spXlBooks->Add(); Excel::_WorksheetPtr spXlSheet = spXlBook->ActiveSheet; HRESULT(Excel::_Worksheet::*pMove)(…) = &spXlSheet->Excel::_Worksheet::Move; <… irrelevant code …> return 0; } 这有以下编译器错误: 错误C2276:'&':绑定成员函数expression式的非法操作 […]

Python:使用Win32 COM Api打开Excel工作簿

我正在使用以下代码在Excel中打开并显示工作簿: import win32com.client as win32 excel = win32.gencache.EnsureDispatch('Excel.Application') wb = excel.Workbooks.Open('my_sheet.xlsm') ws = wb.Worksheets('blaaaa') excel.Visible = True 当文件“my_sheet.xlsm”已被打开时,Excel会询问我是否要重新打开而不保存。 我怎么能预先检查工作簿是否已经打开,如果是,就把它放在前面? 编辑 :现在发现: if excel.Workbooks.Count > 0: for i in range(1, excel.Workbooks.Count+1): if excel.Workbooks.Item(i).Name is 'my_sheet.xlsm': wb = excel.Workbooks.Item(i) break 还有一个问题 :我的工作表包含一些标题,我启用了一些过滤。 所以当filter被设置,当我从Python打开工作簿时,有时会要求我input一个唯一的名称来保存filter。 这是为什么? 这是对话: 编辑确定它说(德语)后面的问题是2007年和2010年文件中的已知错误: https : //social.msdn.microsoft.com/Forums/de-DE/3dce9f06-2262-4e22-a8ff- 5c0d83166e73 / excel-api-interne-namen ,它似乎存在,如果以编程方式打开Excel文件。 不知道是否有解决方法。

excel访问被win32 python pywin32拒绝

我的代码是 #Opens template for creating final report excel = win32.dynamic.Dispatch('Excel.Application') template = os.path.abspath((folderpath+'\Poop.xlsx')) wb = excel.Workbooks.Open(template) freshws= wb.Sheets("Fresh") #Sheet names must match perfectly secws= wb.Sheets("sec") cur.execute("Select * from FIRALL") freshdata=list(cur.fetchall()) #writes to the first sheet datarowlen=0 for i,a in enumerate(freshdata): datarowlen = len(a) for j,b in enumerate(a): freshws.Cells(i+1,j+1).Value = a[j] cur.execute("Select * from SECVE") secdata=list(cur.fetchall()) […]

读取Excel的编辑框

经过一番挖掘,事实certificate,Excel的编辑控件不是标准的Windows TextBox,我似乎无法对其执行GetWindowText() 。 做一个间谍它揭示它属于一个名为EXCEL6类。 有没有办法使用平台调用或其他方式从非标准的文本控件中获取文本? 后来我在MSDN中发现GetWindowText()不能用于属于其他进程的控件,而且我需要直接将WM_GETTEXT发送到目标窗口。 我也尝试过,但它似乎返回垃圾数据。

Excel 2016和PyWin32的打开方式不同,正常打开

我使用以下代码使用PyWin32包从Python打开Excel 2016 import win32com.client as win32 from win32com.client import Dispatch def openWorkbook(filePath): excelObj = win32.gencache.EnsureDispatch("Excel.Application") excelObj.DisplayAlerts = False excelObj.Visible = True wbkObj = excelObj.Workbooks.Open(Filename=filePath) return(excelObj, wbkObj) 当我以这种方式打开工作簿时,我所依赖的一些插件没有初始化,虽然他们在以典型方式打开Excel时进行初始化。 虽然我明白,我可以通过他们的文件path手动初始化他们,但我更愿意以这样的方式打开Excel,即所有通常初始化的加载项都包含在内。 谢谢。

以编程方式取消C#中的键盘命令

我想用VSTO编写一个钩子到MS Excel,而且我真的很接近我需要的东西,但我有一个小问题。 我用低级的WINAPI调用来获取键盘事件,并检查键击(效果很好)。 [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr SetWindowsHookEx(int idHook, KeyCaptureDelegate lpfn, IntPtr hMod, uint dwThreadId); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); private static IntPtr KeyCaptureCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0) […]

VSTO覆盖自定义任务窗格中的Excel热键

是否可以重写自定义任务窗格中的Excel键盘快捷键? 例如,我想要捕获快捷键Ctrl + 空格 ,但Excel已经在自定义任务窗格中使用该快捷方式,并且快捷方式永远不会到达我的用户控件上的KeyPressed事件处理程序。 Excel没有使用的其他组合键到达我的事件处理程序就好了。 有没有办法来覆盖这个,也许通过Windows API?

FindWindow,FindWindowEx和SendMessage在locking的PC上

我只想问,当PC被locking时,Findwindow,FindWindowEx和SendMessage是否工作? 顺便说一句,我有一个Windows 7电脑(工作电脑)。 我试图自动化文件下载,但我很难绕过文件下载对话框。 我能够使用SendKeys,但发现它不起作用,当电脑被locking。 我正在自动化一个将在我开始工作之前运行的任务。 这是一个分数报告。 提前致谢。 编辑: 对不起,如果我没有包括这个信息,但链接或下载文件链接是由javascript / jquery函数生成的。 我的链接只有每秒递增的数字值。 而我无法弄清楚模式,我试着从最后一个下载链接图增加,但它没有工作。

Python中的密码保护excel表(用win32包替代)

是否有任何包(不是Windows的win32)通过我可以处理密码保护excel表。 我已经从字面上尝试所有的解决scheme的win32api,但它不适合我。 导入win32api,sys,os DLL加载失败:%1不是有效的win32应用程序。 我要求一个替代解决scheme来处理Excel中的密码保护文件? 到目前为止,我发现的所有解决scheme都表明我使用win32,但不幸的是它无法正常工作。 编辑 – 已解决的问题。 看到下面的解决scheme

模拟用户作为服务运行时,Excel无法正确启动

运行Excel作为一项服务不build议,我知道。 🙂 问题:从Windows服务启动Excel工作正常。 即使是多个实例也可以无缝地并行工作。 问题出现在对Analysis Services运行查询的必要性。 不幸的是,不使用http协议时不使用Analysis Services连接的用户Id /密码属性。 MSAS Ole Db Connection传递给正在运行的进程的用户。 这使得有必要不仅从一个服务启动Excel,而且甚至事先进行模拟。 (如果有人有更好的主意,欢迎!) 为了让Excel模拟在C#中的Process.Start不再工作,因为它使用下面的CreateProcessWithLogonW,导致在尝试加载用户configuration文件时作为服务运行时出现拒绝访问错误消息。 脚步: LogonUser的 模仿 LoadUserProfile GetEnvironmentBlock CreateProcessAsUser 这个问题毕竟不是Excel的开始或给出的错误信息,它只是没有任何窗口。 线程可用,但没有窗口迭代。 有没有人在那里有经验? 注意: 如果代码是必要的,我很乐意添加它,它是一堆,所以我没有添加它到目前为止。 代码运行良好,Excel将无缝地启动,当我不模仿,但从当前进程检索令牌,并创build一个主令牌 有谁知道如何找出为什么Excel挂起? eventlog,procmon或procexp都不显示任何有用的信息。 login总是工作没有错误消息(我试过LOGON32_LOGON_INTERACTIVE以及_SERVICE以及其他) 对于模拟我使用ImpersonateLoggedOnUser以及C#变体没有不同的行为 谢谢。