RSS Feed

‘code’ Category

  1. flash 跨域读取数据

    八月 18, 2005 by bborn

    说起来是很奇怪的一个问题
    我传flash到论坛上
    flash中读取数据是用的绝对地址
    然后测试
    有时候可以读取成功 有时候却不可以
    真的是郁闷
    想不通
    后来有人提醒是flash的安全功能
    我想了半天 为何是同一个flash 却有两种结果
    去看了看flash的帮助文档
    flash7 中对这方面的要求更严格了
    后来想明白了
    我在as中写的是用 http://www.bborn.cn/…
    但是我自己访问网站时候有时候输入的是 bborn.cn
    有时候从地址栏选取的时候是 www.bborn.cn
    测试 果然如此
    哎 让了郁闷了 早上

    关于 Flash Player 安全功能
    默认情况下,Flash Player 7 和更高版本防止从一个域提供的 SWF 文件访问从另一个域提供的数据、对象或变量。从不同的域提供的 SWF 文件不能互相访问对方的对象和变量。另外,通过不安全的(非 HTTPS)协议加载的内容不能访问通过安全的 (HTTPS) 协议加载的内容,即使这些内容都在完全相同的域中。例如,如果未得到明确许可,位于
    http://www.macromedia.com/main.swf 的 SWF 文件不能加载
    https://www.macromedia.com/data.txt 中的数据。从一个域提供的 SWF 文件也不能从另一个域加载数据(例如使用 loadVariables())。

    相同的数字 IP 地址兼容。但是,域名与 IP 地址不兼容,即使该域名解析为相同的 IP 地址。

    下表显示兼容域的示例:

    www.macromedia.com
    www.macromedia.com

    data.macromedia.com
    data.macromedia.com

    65.57.83.12
    65.57.83.12

    下表显示不兼容域的示例:

    www.macromedia.com
    data.macromedia.com

    macromedia.com
    www.macromedia.com

    www.macromedia.com
    macromedia.com

    65.57.83.12
    www.macromedia.com(即使此域可解析为 65.57.83.12)

    www.macromedia.com
    65.57.83.12(即使 www.macromedia.com 可解析为此 IP)


  2. flash+asp+access demo

    八月 17, 2005 by bborn

    读取wish的数据库


  3. flash 与 asp

    八月 17, 2005 by bborn

    2 乱码

    flash接收asp返回值是乱码
    这个问题说简单也简单 就是加入一句 System.useCodepage=true;

    不过关于这个的说法,很多帖子文章没有细说,也有说错的
    这里引用一下帮助里的说法

    还有个郁闷的是,乱码就象是随机一样
    1 不加这一句 开始的时候中文显示正常,后来不行
    2 加了这一句 还是乱码 我还以为是asp程序的问题
    3 每次第一次点击是乱码 然后再点就可以了 郁闷

    System.useCodepage
    可用性
    Flash Player 6。

    用法
    System.useCodepage

    说明
    属性;一个布尔值,它通知 Flash Player 是使用 Unicode 来解释外部文本文件,还是使用运行播放器的操作系统的传统代码页来解释外部文本文件。system.useCodepage 的默认值为 false。

    当该属性设置为 false 时,Flash Player 按 Unicode 解释外部文本文件。(保存这些文件时,必须使用 Unicode 对其进行编码。)
    当该属性设置为 true 时,Flash Player 使用运行播放器的操作系统的传统代码页来解释外部文本文件。
    对于作为外部文件包含或加载的文本(使用 #include 命令,loadVariables() 或 getURL 动作,或 LoadVars 或 XML 对象),保存这些文本文件时必须使用 Unicode 对其进行编码,这样 Flash Player 才能将其识别为 Unicode。若要使用 Unicode 对外部文件进行编码,请在支持 Unicode 的应用程序(例如,Windows 2000 上的“记事本”)中保存这些文件。

    如果包含或加载了非 Unicode 编码的外部文本文件,则应将 system.useCodepage 设置为 true。在加载数据的 SWF 文件的第一帧中,在最前面添加以下代码(第一行代码):

    system.useCodepage = true;

    如果有这一行代码,Flash Player 将使用运行 Flash Player 的操作系统的传统代码页来解释外部文本。对于英文 Windows 操作系统,该代码页通常为 CP1252;对于日文操作系统,该代码页通常为 Shift-JIS。如果将 system.useCodepage 设置为 true,Flash Player 6 和更高版本处理文本的方式与 Flash Player 5 相同。(Flash Player 5 在处理文本时,将所有文本都视为按运行播放器的操作系统的传统代码页编码的文本。)

    如果将 system.useCodepage 设置为 true,应注意您的外部文本文件中使用的字符必须包含在运行播放器的操作系统的传统代码页中,这样才能显示该文本。例如,如果您加载了一个包含中文字符的外部文本文件,这些字符在使用 CP1252 代码页的系统上将无法显示,因为该代码页不包含中文字符。

    若要确保所有平台上的用户都能查看您的 SWF 文件中使用的外部文本文件,应使用 Unicode 对所有外部文本文件进行编码,并将 System.useCodepage 设置保留为其默认设置 false。这样,Flash Player 6 和更高版本将按 Unicode 解释文本。


  4. flash和asp等后台程序配合使用的问题

    八月 16, 2005 by bborn

    1 相对路径

    //构造一个新的LoadVars对象
    myload = new LoadVars();
    //设定myload的动作,以便服务器验证
    myload.action = “post”;
    ……
    myload.sendAndLoad(“blog/test.asp”, myload, “post”);
    //下面的不行
    //myload.sendAndLoad(“/blog/test.asp”, myload, “post”);
    }

    还有就是http://localhost/…我测试也没有通过,用http://127.0.0.1/… 就可以了
    麻烦了半天


  5. 更改msn messenger个人消息程序的源码

    八月 10, 2005 by bborn

    很简单的一个用sdk写的c++程序

    这是头文件的部分 声明一下函数

    #include “resource.h”
    #include

    BOOL CALLBACK DlgProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
    void ChangeUserMsg(bool bshow, int x,const WCHAR* str);

    LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);

    这是前面的一些必要的声明

    #define MSNMusicString L”\\0%s\\0%d\\0[%s]\\0″
    bool bshow = 0;
    HINSTANCE hInst;
    NOTIFYICONDATA IconData;
    int msna,msnb;
    #define WM_MYTRAY WM_USER+99

    主要的函数

    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
    {

    hInst = hInstance;

    DialogBoxParam(hInst, (LPCSTR)IDD_DIALOG1, NULL, DlgProc, NULL);
    return 0;
    }

    BOOL CALLBACK DlgProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    {
    HICON hIcon;
    HWND hact;
    WCHAR  temp[256];

    switch(iMsg)
    {
    case WM_INITDIALOG:
    hIcon = LoadIcon(hInst, (LPCSTR)IDI_ICON1);
    SendMessage(hwnd, WM_SETICON, (WPARAM)ICON_BIG, (LPARAM)hIcon);
    SendMessage(hwnd, WM_SETICON, (WPARAM)ICON_SMALL, (LPARAM)hIcon);
    CheckDlgButton(hwnd,IDC_RADIO1,BST_CHECKED);  msnb=1;
    CheckDlgButton(hwnd,IDC_RADIO4,BST_CHECKED);  msna=1;
    break;

    case WM_TIMER:
    if (wParam==1)
    {
    hact=GetForegroundWindow();
    GetWindowTextW (hact,temp,256);
    ChangeUserMsg(1,msnb,temp);
    }
    break;

    case WM_MYTRAY :
    if (lParam==WM_LBUTTONDOWN)
    {
    Shell_NotifyIcon(NIM_Delete, &IconData);
    ShowWindow(hwnd,1);
    }
    break;

    case WM_COMMAND:
    switch(LOWORD(wParam))
    {
    case IDOK:
    msna=IsDlgButtonChecked(hwnd,IDC_RADIO6);
    if(msna==1)
    {
    KillTimer(hwnd,1);
    ChangeUserMsg(0,0,0);
    }
    else
    {
    if(IsDlgButtonChecked(hwnd,IDC_RADIO1)==1)  msnb=1;
    if(IsDlgButtonChecked(hwnd,IDC_RADIO2)==1)  msnb=2;
    if(IsDlgButtonChecked(hwnd,IDC_RADIO3)==1)  msnb=3;
    SetTimer(hwnd,1,2000, 0);
    }
    IconData.cbSize = sizeof(NOTIFYICONDATA);
    IconData.hWnd  = hwnd;
    IconData.uID = 12;
    IconData.hIcon  = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
    IconData.uFlags = NIF_MESSAGE + NIF_ICON + NIF_TIP;
    IconData.uCallbackMessage = WM_MYTRAY;
    strcpy(IconData.szTip, “自定义Msn Messenger的个人消息”);
    Shell_NotifyIcon(NIM_ADD, &IconData);
    ShowWindow(hwnd,0);
    break;
    case IDCANCEL:
    KillTimer(hwnd,1);
    Shell_NotifyIcon(NIM_Delete, &IconData);
    ChangeUserMsg(0,0,0);
    EndDialog(hwnd, 0);
    break;
    case IDC_ABOUT:
    DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hwnd, (DLGPROC)About);
    break;

    default:
    return TRUE;
    }

    default:
    return FALSE;
    }
    }

    // Mesage handler for about box.
    LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message)
    {
    case WM_INITDIALOG:
    return TRUE;

    case WM_COMMAND:
    if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
    {
    EndDialog(hDlg, LOWORD(wParam));
    return TRUE;
    }
    break;
    }
    return FALSE;
    }

    下面是主要功能的实现

    void ChangeUserMsg(bool bshow, int x, const WCHAR*  str)
    {
    COPYDATASTRUCT msndata;
    WCHAR buffer[500];
    WCHAR style[5];

    if(x==1)
    {wsprintfW(style,L”Office”);}
    else if (x==2)
    {wsprintfW(style,L”Music”);}
    else
    {wsprintfW(style,L”Games”);}

    //bool bshow = 1;

    wsprintfW(buffer, MSNMusicString,  style, bshow , str );

    HWND msnui = NULL;
    msndata.dwData = 0×547;
    msndata.lpData = &buffer;
    msndata.cbData = (lstrlenW(buffer)*2)+2;
    msnui = FindWindowEx(NULL, msnui, “MsnMsgrUIManager”, NULL);

    if (msnui!=0)
    {
    SendMessage(msnui, WM_COPYDATA, 0, (LPARAM)&msndata);
    }
    }

    主要的问题出在WCHAR这个类型上
    开始不知道怎么处理怎么传递怎么赋值怎么复制等
    还有一个就是托盘图标
    很简单的实现,但是在填充数据结构的时候
    IconData.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
    把LoadIcon的第一个参数设为0了,图标怎么都显示不出来
    看别人的程序有这样写的,不知道是不是说错了
    找原因找了半天 还以为是自己做的图标的问题
    图标并不一定要是16×16的


  6. 小程序 更改msn messenger的个人消息为当前窗口的标题

    八月 3, 2005 by bborn

    msn messenger 有个小功能
    可以在个人消息处显示当前你正在听的音乐
    这有些类似QQ的个人签名

    前提是你打开这个功能并使用类似wmp或者支持此功能的播放器
    其实 msn messenger不仅可以显示音乐图标
    还可以显示办公或者游戏图标

    我这两天做了个小东西
    就是可以把这个个人消息更改为你当前窗口的标题

    这样 当你玩游戏的时候
    你的联系人就可以从你的消息知道你正在干吗
    你的朋友也可以看到你正在看什么网页或者忙着办公…

    绿色软件 下载就用
    点击下载此文件