Windows Live Writer 发布博客(cppBlog,cnblogs)

Windows Live Writer 发布博客(cppBlog,cnblogs)

第一次使用Live Writer发布博客做个测试。^_^

1. MetaWeblog API地址
    cnblogs格式为:http://www.cnblogs.com/你的博客名/services/metaweblog.aspx

    cppblog格式为:http://www.cppblog.com/你的博客名/services/metaweblog.aspx

(在Options » Configure 页面中可以查到)。

2. 下载Windows Live Writer,配置步骤:

2.1 在菜单中选择“工具”》“帐户”,出现下面的画面:

Windows Live Writer 发布博客(cppBlog,cnblogs)_第1张图片

2.2 点击“添加按钮”,在出现的窗口中选择“其他日志服务”,如下图 :

Windows Live Writer 发布博客(cppBlog,cnblogs)_第2张图片

2.3 点击“下一步”,出现添加日志帐户的窗口,填入相应的内容,日志网址为您的博客主页地址,用户名填写您的登录用户名(不是Blog名,也不是显示名称)和密码,如下图:

Windows Live Writer 发布博客(cppBlog,cnblogs)_第3张图片

2.4 点击“下一步”,出现配置检测窗口

Windows Live Writer 发布博客(cppBlog,cnblogs)_第4张图片

注:如果自动配置没有成功,需要手动配置:

a) 在“Type of  weblog that you are using”中选择“Custom(Metaweblog API)”。
b) “Remote posting URL for your weblog”中输入“http://www.cnblogs.com/你的博客名/services/metaweblog.aspx”。

2.5 检测过程中会出现“是否要发布临时日志”窗口(如下图),一般选择“No”。

Windows Live Writer 发布博客(cppBlog,cnblogs)_第5张图片

2.6 检测完毕之后,会出现下面的窗口,点击“完成”就配置成功了。

 

 

 

 

 

Windows Live Writer 发布博客(cppBlog,cnblogs)_第6张图片

3. 插件

3.1 SyntaxHighlighter

博客园内置支持SyntaxHighlighter代码着色,代码着色语法:<pre class='brush:编程语言'>代码</pre>。

需要注意的是:如何你使用SyntaxHighlighter代码着色,需要将默认编辑器改为TinyMCE。如果使用CuteEditor,CuteEditor会自动去除代码中的空格,造成代码格式破坏。

cnBlogs推荐的代码着色插件是:Windows Live Writer Source Code plugin for SyntaxHighlighter

官方网址:http://sourcecodeplugin.codeplex.com/

本地下载:SourceCodePlugin_version_1.1.zip

将WindowsLiveWriter.SourceCode.dll复制到Windows Live Writer plugin文件夹:
* 32-bit systems: C:\Program Files\Windows Live\Writer\Plugins
* 64-bit systems: C:\Program Files (x86)\Windows Live\Writer\Plugins

使用方法:

安装成功之后,在Live Writer会出现“Source Code”插件,如下图:

Windows Live Writer 发布博客(cppBlog,cnblogs)_第7张图片

点击该插件,粘贴需要着色的代码并选择相应的编程语言即可。

Windows Live Writer 发布博客(cppBlog,cnblogs)_第8张图片

可能是我插件没安装好,插入的代码并没高亮,直接在CppBlog后台编辑下先回头研究
   
   
   
   

/**/ /********************************************************************
**    Copyright(c):    1987-2011    LynnRaymond
**    All right reserved. 
**    
**    Version:        1.0
**    Author:            LynnRaymond
**    Date:            2011-8-23
**    
**    Module Name:    An simple example for Windows Application
**    File Name:         helloblog.cpp
**    Related Files:    
**    
**    Description:    An simple example for Windows Application
**
**-------------------------------------------------------
**    Modifier:        
**    Version:        
**    Description:    
********************************************************************
*/


//  header files
#include  < windows.h >

//  WindowProc Callback function
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);


//  WinMain
//  The entry of windows application
int  WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,  int  iCmdShow)
{
    
static TCHAR szAppName[] = TEXT ("");
    HWND         hwnd;
    MSG          msg;
    WNDCLASSEX   wndclassex 
= {0};
    wndclassex.cbSize        
= sizeof(WNDCLASSEX);
    wndclassex.style         
= CS_HREDRAW | CS_VREDRAW;
    wndclassex.lpfnWndProc   
= WndProc;
    wndclassex.cbClsExtra    
= 0;
    wndclassex.cbWndExtra    
= 0;
    wndclassex.hInstance     
= hInstance;
    wndclassex.hIcon         
= LoadIcon (NULL, IDI_APPLICATION);
    wndclassex.hCursor       
= LoadCursor (NULL, IDC_ARROW);
    wndclassex.hbrBackground 
= (HBRUSH) GetStockObject (WHITE_BRUSH);
    wndclassex.lpszMenuName  
= NULL;
    wndclassex.lpszClassName 
= szAppName;
    wndclassex.hIconSm       
= wndclassex.hIcon;
    
    
if (!RegisterClassEx (&wndclassex))
    
{
        MessageBox (NULL, TEXT (
"RegisterClassEx failed!"), szAppName, MB_ICONERROR);
        
return 0;
    }

    hwnd 
= CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, 
                          szAppName, 
                          TEXT (
"WindowTitle"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, 
                          CW_USEDEFAULT, 
                          CW_USEDEFAULT, 
                          CW_USEDEFAULT, 
                          NULL, 
                          NULL, 
                          hInstance,
                          NULL); 
                          
    ShowWindow (hwnd, iCmdShow);
    UpdateWindow (hwnd);
    
    
while (GetMessage (&msg, NULL, 00))
    
{
        TranslateMessage (
&msg);
        DispatchMessage (
&msg);
    }

    
return msg.wParam;
}


//  WindowProc Callback function
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    
switch (message)
    
{
    
case WM_CREATE:
        
return (0);
        
    
case WM_PAINT:
        hdc 
= BeginPaint (hwnd, &ps);
        TextOut (hdc, 
00, L"A Window!"27);
        EndPaint (hwnd, 
&ps);
        
return (0);
        
    
case WM_DESTROY:
        PostQuitMessage (
0);
        
return (0);
    }

    
return DefWindowProc (hwnd, message, wParam, lParam);
}

 

3.2 Paste from Visual Studio插件,下载

 

 

该插件代码使用<pre>标签,没有空格、换行HTML标签(节省一些HTML代码),提供class="code"自定义<pre>标签样式。

高亮显示代码,只要从Visual Studio或者SQL Server中复制一下,然后点击“插入from Visual Studio...”。其HTML代码就自动生成了~,唯一的缺点就是每次会在结尾加一个空链接,可能来注明版权吧。

使用Windows Live Writer写博文,建议把博客园编辑器设置为“纯文本框”(后台选项---Preferences---默认编辑器或者后台左边操作快捷通道),千万不要使用CuteEditor,这个编辑器存在一些BUG,由于这个插件不是使用“&nbsp;”来缩进的,直接是空白用于缩进,编辑器存在BUG会过滤掉每行前面的空白,这样导致你的代码没有缩进,在一行输出。

Paste插件看起来正常,除了中间一些tab没能对齐:
/******************************************************************** ** Copyright(c): 1987-2011 LynnRaymond ** All right reserved. ** ** Version: 1.0 ** Author: LynnRaymond ** Date: 2011-8-23 ** ** Module Name: An simple example for Windows Application ** File Name: helloblog.cpp ** Related Files: ** ** Description: An simple example for Windows Application ** **------------------------------------------------------- ** Modifier: ** Version: ** Description: *********************************************************************/ // header files
#include <windows.h> // WindowProc Callback function LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); // WinMain // The entry of windows application int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName[] = TEXT (""); HWND hwnd; MSG msg; WNDCLASSEX wndclassex = {0}; wndclassex.cbSize = sizeof(WNDCLASSEX); wndclassex.style = CS_HREDRAW | CS_VREDRAW; wndclassex.lpfnWndProc = WndProc; wndclassex.cbClsExtra = 0; wndclassex.cbWndExtra = 0; wndclassex.hInstance = hInstance; wndclassex.hIcon = LoadIcon (NULL, IDI_APPLICATION); wndclassex.hCursor = LoadCursor (NULL, IDC_ARROW); wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); wndclassex.lpszMenuName = NULL; wndclassex.lpszClassName = szAppName; wndclassex.hIconSm = wndclassex.hIcon; if (!RegisterClassEx (&wndclassex)) { MessageBox (NULL, TEXT ("RegisterClassEx failed!"), szAppName, MB_ICONERROR); return 0; } hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW, szAppName, TEXT ("WindowTitle"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow (hwnd, iCmdShow); UpdateWindow (hwnd); while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg); DispatchMessage (&msg); } return msg.wParam; } // WindowProc Callback function LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (message) { case WM_CREATE: return (0); case WM_PAINT: hdc = BeginPaint (hwnd, &ps); TextOut (hdc, 0, 0, L"A Window!", 27); EndPaint (hwnd, &ps); return (0); case WM_DESTROY: PostQuitMessage (0); return (0); } return DefWindowProc (hwnd, message, wParam, lParam); }

你可能感兴趣的:(Windows Live Writer 发布博客(cppBlog,cnblogs))