如何检测手机当前为“桌面”(desktop)状态

#ifdef __SERIES60_3X__
const TUid KUidStandBy = { 0x101fd64c }; // For 3rd Edition
const TUid KUidStandBy_FP2 = { 0x102750F0 }; // For 3rd edition Emulator and FP2 devices
#else // #ifdef __SERIES60_3X__
const TUid KUidStandBy = { 0x100058b3 }; // For 2nd Edition
#endif // #ifdef __SERIES60_3X__

 

From Forum Nokia Wiki

  • 介绍

一些桌面软件会在用户把手机切换到桌面(desktop)时显示一些特定的信息,如图片,滚动文字等,达到一种个性桌面的效果,这里就介绍一种检测“桌面”的方法。

S60 2nd的“桌面”是电话应用,S60 3rd的“桌面”是Idle.exe,由此我们可以通过当前焦点程序的UID来判断手机是否处在“桌面”状态。

用户在操作手机时候会产生一些事件,其中有一个就是Focus Changed Event,所以我们只需获取这个事件通知,并在这个事件到来时获取焦点程序的UID进行比较就可以了。

  • 平台

S60 2nd,3rd

1、使自己的程序接收Focus Changed Event:

void YourAppUi::ConstructL(void) 
{
// some code
 
iEikonEnv->RootWin().EnableFocusChangeEvents();
 
// some code
}

2、处理事件:

void CDrawWindowTestAppUi::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination)
{
// const TUid KUidPhoneApp = { 0x100058b3 }; // for S60 2nd
const TUid KUidIdleApp = { 0x101FD64C }; // for S60 3rd
 
if ( aEvent.Type() == EEventFocusGroupChanged )
{
// 获取当前焦点程序的UID
RWsSession& ws = iEikonEnv->WsSession();
TInt wgid = ws.GetFocusWindowGroup();
CApaWindowGroupName* gn = CApaWindowGroupName::NewLC(ws, wgid);
TUid aCurAppUid = gn->AppUid();
CleanupStack::PopAndDestroy(gn);
 
 
if ( aCurAppUid == KUidPhoneApp )
{
// 当前为桌面
}
else
{
 
}
}
 
// 不要忘了这里^_^
CAknAppUi::HandleWsEventL(aEvent, aDestination);
}
from : Cxt_programmer 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下的VBA代码来实现你的需求: ``` Sub ConvertToPDF() Dim sFolderPath As String Dim sPDFPath As String Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim objExcel As Object '设置文件夹路径 sFolderPath = Environ("USERPROFILE") & "\Desktop\1\" '获取文件夹对象 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(sFolderPath) '遍历文件夹中的文件 For Each objFile In objFolder.Files If Right(objFile.Name, 4) = "xlsx" Then '判断是否为Excel文件 '设置PDF文件路径 sPDFPath = sFolderPath & Replace(objFile.Name, ".xlsx", ".pdf") '打开Excel文件 Set objExcel = CreateObject("Excel.Application") objExcel.Visible = False objExcel.Workbooks.Open objFile.Path '导出为PDF objExcel.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sPDFPath, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False '关闭Excel文件 objExcel.Workbooks.Close objExcel.Quit '刷新当前处理的文件名 Application.StatusBar = "正在处理:" & objFile.Name End If Next '释放对象 Set objFile = Nothing Set objFolder = Nothing Set objFSO = Nothing Set objExcel = Nothing '清除状态栏 Application.StatusBar = False End Sub ``` 你可以将上面的代码复制到一个新的 VBA 模块中,然后运行 `ConvertToPDF` 子过程来批量将指定文件夹中的 Excel 文件转换为 PDF 文件。 注意:在运行代码之前,最好先在 Excel 中手动打开一个要转换的 Excel 文件,然后关闭所有 Excel 窗口,这样可以确保在导出 PDF 时不会弹出诸如“文件已经打开,是否只读打开”等提示框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值