我有一个完整的Windows API调用列表:
listOfSequences =
['GetSystemDirectoryA',
'IsDBCSLeadByte',
'LocalAlloc',
'CreateSemaphoreW',
'CreateSemaphoreA',
'GlobalAddAtomW',
'lstrcpynW',
'LoadLibraryExW',
'SearchPathW',
'CreateFileW',
'CreateFileMappingW',
'MapViewOfFileEx',
'GetSystemMetrics',
'RegisterClipboardFormatW',
'SystemParametersInfoW',
'GetDC',
'GetDeviceCaps',
'ReleaseDC', ...... and so on .....]
由于其中一些发生了几次,我想收集它们的出现次数。因此,我使用了collections.Counter。 但它将一些API连接在一起:
lCountedAPIs = Counter(listOfSequences)
当我打印 lCountedAPIs 时,我得到了以下信息:
Counter({'IsRectEmptyLocalAlloc': 2,
'DdePostAdvise': 3,
'DispatchMessageWGetModuleFileNameA': 2,
'FindResourceExW': 50318,
'ReleaseDCGetModuleFileNameW': 7,
'DefWindowProcAGetThreadLocale': 1,
'CoGetCallContext': 40,
'CoGetTreatAsClassGetCommandLineA': 1,
'GetForegroundWindowGetSystemDirectoryW': 1,
'GetModuleHandleWGetSystemTimeAsFileTime': 2,
'WaitForSingleObjectExIsChild': 1,
'LoadIconAGetWindowsDirectoryW': 2,
'GlobalFreeLocalAlloc': 10,
'GetMapModeCreateSemaphoreW': 1,
'HeapLock': 11494, <---------- A
'CharNextAGetCurrentProcessId': 11, <---------- B
'RemovePropWGetStartupInfoA': 1,
'GetTickCountGetVersionExW': 55,
因此,例如: HeapLock (参见A)未与其他API合并 但 CharNextA 与 GetCurrentProcessId 连接(见B)
有人可以告诉我为什么会这样,以及如何解决这个问题?
谢谢你的提议&amp;最好的问候:)
答案 0 :(得分:4)
检查列表定义。 Python连接相邻的字符串文字,因此你必须错过中间某处的逗号:
listOfSequences = [
'GetSystemDirectoryA',
'IsDBCSLeadByte',
'LocalAlloc',
...
'CharNextA'
# ^ comma missing here
'GetCurrentProcessId',
...
]
这几次咬了我。
答案 1 :(得分:1)
Counter
中没有任何内容可以做到这一点。您必须在'CharNextAGetCurrentProcessId'
中出现11次listOfSequences
次。您可以通过运行'CharNextAGetCurrentProcessId' in listOfSequences
来查看此内容。