windows中,可以使用命令行查看进程加载的DLL。
查看所有进程的加载的DLL:
tasklist /m
查看指定进程加载的DLL (例如查看notepad++.exe)
tasklist /m /fi "imagename eq notepad++.exe"
windows中,可以使用命令行查看进程加载的DLL。
查看所有进程的加载的DLL:
tasklist /m
查看指定进程加载的DLL (例如查看notepad++.exe)
tasklist /m /fi "imagename eq notepad++.exe"
windows批处理执行Mysql脚本,批处理脚本代码如下:
@echo off
%cd%\mysql\bin\mysql.exe -u root -h 127.0.0.1 -p123456 -e"use cqms;select 1;select 2;"
echo 数据库升级完成
pause
通过文件执行
@echo off
%cd%\mysql\bin\mysql.exe -u root -h 127.0.0.1 -p123456 < c:\test\aaa.txt
echo 数据库升级完成
pause
Windows使用命令行开启允许sql server远程连接:
EXEC sys.sp_configure N'remote access', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO
dos命令,根据进程名结束进程
例如要结束 server.exe
taskkill /f /im server.exe /t
在新窗口中重新启动应用
start server.exe
Windows批处理查找并结束进程,查找进程名中包含Note的进程,并结束掉它
wmic Path win32_process Where "CommandLine Like '%%Note%%'" Call Terminate
pause
Python2 在windows控制台运行会出现乱码,改用IronPython解析就好了。
Python2 在windows控制台运行会出现乱码。
一个彻底的解决 办法是改成python3,但工作量太大。
今晚试了下IronPython,,非常好用,直接支持中文了,而且不用改一行代码!!!
因为这个事情浪费了好多时间。把一个QQ机器人的代码改成了py3
注意在Py文件第一行写上: # -*- coding: utf-8 -*-
C++使用Windows SDK获取系统分区大小以及使用情况,代码如下:
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdint.h>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
void TestDrive()
{
cout << "TestDrive" << endl;
char* lpDrives = (char *)malloc(MAX_PATH * sizeof(char ));
memset(lpDrives, 0, MAX_PATH * sizeof (char));
DWORD dwLen = ::GetLogicalDriveStringsA(MAX_PATH, lpDrives);
cout << "dwLen: " << dwLen << endl;
DWORD driver_number = dwLen / 4;
cout << "driver_number: " << driver_number << endl;
string driver;
LPTSTR start;
for (DWORD nIndex = 0; nIndex < driver_number; nIndex++)
{
start = lpDrives + nIndex * 4;
cout << "........................................." << endl;
driver.append(start);
cout << "lpDrives + nIndex * 4: " << lpDrives + nIndex * 4 << endl;
cout << "DRIVE_REMOVABLE: " << DRIVE_REMOVABLE << endl;
cout << "::GetDriveType(lpDrives + nIndex * 4): " << :: GetDriveType(lpDrives + nIndex * 4) << endl;
if (::GetDriveType (start) == DRIVE_REMOVABLE)
{
driver.append(start);
if (GetVolumeInformation (start, 0, 0, 0, 0, 0, 0, 0)) //判断驱动是否准备就绪
{
cout << "驱动准备就绪 " << endl;
}
}
uint64_t lpFreeBytesAvailable = 0;
uint64_t lpTotalNumberOfBytes = 0;
uint64_t lpTotalNumberOfFreeBytes = 0;
GetDiskFreeSpaceExA(lpDrives + nIndex * 4,
(PULARGE_INTEGER)&lpFreeBytesAvailable,
(PULARGE_INTEGER)&lpTotalNumberOfBytes,
(PULARGE_INTEGER)&lpTotalNumberOfFreeBytes);
cout << "lpFreeBytesAvailable: " << lpFreeBytesAvailable << endl;
cout << "lpTotalNumberOfBytes: " << lpTotalNumberOfBytes << endl;
cout << "lpTotalNumberOfFreeBytes: " << lpTotalNumberOfFreeBytes << endl;
}
std::cout << "driver: " << driver << endl;
}
int main(int argc, char *argv[])
{
TestDrive();
return 0;
}
PBK拨号文件路径
WIN7:
C:\Users\All Users\Application Data\Microsoft\Network\Connections\Pbk
XP:
C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk
C++基于Windows的音频采集
#include "stdafx.h"
#include <time.h>
#include <windows.h>
#include<mmsystem.h>
#include<mmreg.h>
#pragma comment(lib, "winmm.lib")
struct RIFF_HEADER//文件类型
{
char szRiffID[4]; // 'R','I','F','F'
DWORD dwRiffSize;//DWORD最大可容纳4GB的文件大小=FILE_LENGTH-8(即减去此数据结构大小)
char szRiffFormat[4]; // 'W','A','V','E'
};
struct WAVE_FORMAT
{
WORD wFormatTag;
WORD wChannels;
DWORD dwSamplesPerSec;
DWORD dwAvgBytesPerSec;
WORD wBlockAlign;
WORD wBitsPerSample;
};
struct FMT_BLOCK
{
char szFmtID[4]; // 'f','m','t',' '
DWORD dwFmtSize;
WAVE_FORMAT wavFormat;
};
struct DATA_BLOCK
{
char szDataID[4]; // 'd','a','t','a'
DWORD dwDataSize;
};
//struct FACT_BLOCK//可先项 一般可不用
//{
// char szFactID[4]; // 'f','a','c','t'
// DWORD dwFactSize;
//};
WAVEFORMATEX pwfx; //声音格式
#define MAX_RUN_COUNT 4
#define BUFFER_COUNT 4
#define MAX_BUFF_SOUNDSIZE 10240
FILE *fptmp;
CHAR m_cBufferIn[BUFFER_COUNT][MAX_BUFF_SOUNDSIZE];
WAVEHDR m_pWaveHdrIn[BUFFER_COUNT];
HWAVEIN phwi; //设备句柄
bool is_stop = false;
void WaveInitFormat(LPWAVEFORMATEX m_WaveFormat, WORD nCh, DWORD nSampleRate, WORD BitsPerSample)
{
m_WaveFormat->wFormatTag = WAVE_FORMAT_PCM;
m_WaveFormat->nChannels = nCh;
m_WaveFormat->nSamplesPerSec = nSampleRate;
m_WaveFormat->nAvgBytesPerSec = nSampleRate * nCh * BitsPerSample / 8;
m_WaveFormat->nBlockAlign = m_WaveFormat->nChannels * BitsPerSample / 8;
m_WaveFormat->wBitsPerSample = BitsPerSample;
m_WaveFormat->cbSize = 0;
}
DWORD CALLBACK MicCallback(HWAVEIN hwavein, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
{
switch (uMsg)
{
case WIM_OPEN: //打开设备时消息,在此期间我们可以进行一些初始化工作
printf("\n设备已经打开...\n");
break;
case WIM_DATA: //当缓存已满或者停止录音时的消息,处理这个消息可以对缓存进行重新分配,实现不限长度录音
{
WAVEHDR*p = ((PWAVEHDR)dwParam1); // 这就是采集到的数据指针
DWORD len = p->dwBytesRecorded; // 这就是采集到的数据长度
int i = p->dwUser;
if (is_stop) //停止
{
waveInUnprepareHeader(phwi, p, sizeof(WAVEHDR)); //释放
return 0;
}
printf("\n缓冲区%d存满...\n", p->dwUser);
fwrite(&m_cBufferIn[i], 1, p->dwBytesRecorded, fptmp);
waveInUnprepareHeader(phwi, p, sizeof(WAVEHDR)); //释放
p->lpData = m_cBufferIn[i];
p->dwBufferLength = MAX_BUFF_SOUNDSIZE;
p->dwBytesRecorded = 0;
p->dwUser = i;
p->dwFlags = 0;
waveInPrepareHeader(phwi, p, sizeof(WAVEHDR)); //准备内存块录音
waveInAddBuffer(phwi, p, sizeof(WAVEHDR)); //增加内存块
break;
}
case WIM_CLOSE: //关闭录音设备时的消息
printf("\n设备已经关闭...\n");
break;
default:
break;
}
return 0;
}
//录音函数
void Start()
{
//获取声卡数
int count = waveInGetNumDevs();//1
printf("\n音频输入数量:%d\n", count);
//获取声音输入设备
WAVEINCAPS waveIncaps;
MMRESULT mmResult = waveInGetDevCaps(0, &waveIncaps, sizeof(WAVEINCAPS));//2
printf("\n音频输入设备:%s\n", waveIncaps.szPname);
//如果正确获取到输入设备
if (MMSYSERR_NOERROR == mmResult)
{
/// HWAVEIN phwi; //设备句柄
// WAVEFORMATEX pwfx;
WaveInitFormat(&pwfx, 1, 8000, 8);
printf("\n请求打开音频输入设备");
printf("\n采样参数:单声道 8kHz 8bit\n");
//打开录音设备
mmResult = waveInOpen(&phwi, WAVE_MAPPER, &pwfx, (DWORD)(MicCallback), NULL, CALLBACK_FUNCTION);//3
//如果正确打开了设备
if (MMSYSERR_NOERROR == mmResult)
{
for (int i = 0; i < BUFFER_COUNT; i++)
{
m_pWaveHdrIn[i].lpData = m_cBufferIn[i];
m_pWaveHdrIn[i].dwBufferLength = MAX_BUFF_SOUNDSIZE;
m_pWaveHdrIn[i].dwBytesRecorded = 0;
m_pWaveHdrIn[i].dwUser = i;
m_pWaveHdrIn[i].dwFlags = 0;
mmResult = waveInPrepareHeader(phwi, &m_pWaveHdrIn[i], sizeof(WAVEHDR));//4
printf("\n准备缓冲区%d\n", i + 1);
}
//数据头准备完成
if (MMSYSERR_NOERROR == mmResult)
{
for (int i = 0; i < BUFFER_COUNT; i++)
{
mmResult = waveInAddBuffer(phwi, &m_pWaveHdrIn[i], sizeof(WAVEHDR));//5
printf("\n将缓冲区%d加入音频输入设备\n", i + 1);
}
//数据块准备完成
if (MMSYSERR_NOERROR == mmResult)
{
//开始录音
mmResult = waveInStart(phwi);//6
printf("\n请求开始录音\n");
}
}
}
}
}
void Stop()
{
is_stop = true;
Sleep(3000); //等待录音完成
printf("Start Stop\n");
waveInStop(phwi);
printf("Start Reset\n");
waveInReset(phwi);
printf("Start Close\n");
waveInClose(phwi);
fclose(fptmp);
}
void Save()
{
long len = 0;
char *buf = NULL;
FILE *fp;
if (fopen_s(&fp, "temp.dat", "rb") == 0)
{
fseek(fp, 0, SEEK_END);;
len = ftell(fp);
fseek(fp, 0, SEEK_SET);
buf = new char[len + 1];
memset(buf, 0, sizeof(char)*(len + 1));
fread(buf, len, 1, fp);
fclose(fp);
}
if (buf == NULL)
{
printf("save error\n");
return;
}
if (fopen_s(&fp, "output.wav", "wb") == 0)
{
RIFF_HEADER riff;
WAVE_FORMAT wform;
FMT_BLOCK fmt;
//FACT_BLOCK fact;
DATA_BLOCK data;
memset(&riff, 0, sizeof(RIFF_HEADER));
memset(&wform, 0, sizeof(WAVE_FORMAT));
memset(&fmt, 0, sizeof(FMT_BLOCK));
//memset(&fact, 0, sizeof(FACT_BLOCK));
memset(&data, 0, sizeof(DATA_BLOCK));
fmt.wavFormat.wFormatTag = WAVE_FORMAT_PCM;//1
fmt.wavFormat.dwAvgBytesPerSec = pwfx.nAvgBytesPerSec;
fmt.wavFormat.dwSamplesPerSec = pwfx.nSamplesPerSec;
fmt.wavFormat.wBitsPerSample = pwfx.wBitsPerSample;
fmt.wavFormat.wBlockAlign = pwfx.nBlockAlign;
fmt.wavFormat.wChannels = pwfx.nChannels;
memcpy(fmt.szFmtID, "fmt ", 4);
fmt.dwFmtSize = 16;//一般情况下为16,如有附加信息为18
memcpy(data.szDataID, "data", 4);
data.dwDataSize = len;
riff.dwRiffSize = (len + sizeof(FMT_BLOCK) + sizeof(DATA_BLOCK));
memcpy(riff.szRiffFormat, "WAVE", 4);
memcpy(riff.szRiffID, "RIFF", 4);
fwrite(&riff, sizeof(RIFF_HEADER), 1, fp);//写RIFF_HEADER
fwrite(&fmt, sizeof(FMT_BLOCK), 1, fp);//写FMT_BLOCK
fwrite(&data, sizeof(DATA_BLOCK), 1, fp);//写数据头 DATA_BLOCK
fwrite(buf, len, 1, fp);
fclose(fp);
}
}
DWORD WINAPI TimeThread(LPVOID wPame)
{
Sleep(10000);
return 0;
}
int main(void)
{
errno_t errno;
errno = fopen_s(&fptmp, "temp.dat", "wb");
if (errno != 0)
{
printf("临时文件创建失败..\n");
return 0;
}
Start();
HANDLE hThread = CreateThread(NULL, NULL, TimeThread, NULL, NULL, NULL);
WaitForSingleObject(hThread, INFINITE); //等待计时线程执行完成
Stop();
Save();
system("pause");
return 0;
}
django1.7 在windows上 运行 python manage.py runserver 启动网站时报错。
错误信息:django.db.utils.OperationalError: unable to open database file
网上都说是权限问题,结果加上权限还是不行。
最后发现路径中有中文,尝试换到全英文路径启动,结果问题解决。