狐言乱语

生命它是一个月台,你来的目的是为了离开........
Redfox @ 2009-06-29 15:02

邓玉娇的事,当时是三个当官的,有个死了,有个伤了,那还有一个是谁?

死了的,和伤了的都有名字,而还有一个呢?那个人是谁?


 
Redfox @ 2009-06-24 02:52

难道我得 H1N1 了?


 
Redfox @ 2009-06-21 20:52

湖北宜昌地产商举办人体摄影比赛展示楼盘



 
Redfox @ 2009-06-09 13:00

凭什么不许我上黄色网站????

只准州官包二奶,不许百姓打飞机


 
Redfox @ 2009-05-26 00:33

多线程程序切换输入法导致死机的问题及解决方案

书呆子

       曾经在一个数据库项目中碰到了一个问题,在线程中创建了ADOConnect读取数据再进行处理,结果当切换输入法时整个程序就死机了。当时非常困惑,在大富翁里也发了帖子,最终都得不到解决,最后经过不断的调试终于知道了问题的原因。近日,见到大富翁里依然还有人被这个问题所困扰,于是写了我的经验心得,希望能够帮助需要的人。

问题产生过程:

       问题产生的过程是这样的,普通的线程由于里面根本就没有窗口,所以创建后,切换输入法是不会对其造成影响,但是,当线程里存在窗口时,切换输入法就会导致死机。这是因为,窗口是和线程相关的,在线程里创建的窗口,窗口的消息循环需要所属线程来处理,在DELPHI中大部分窗口都是创建在主线程里,Application里的ProcessMessage方法处理了主线程的消息队列。但是TThread里并没有内建消息循环,当输入法切换时发送了系统通过SendMessage发送了WM_IME_SELECT消息给线程里的”Default Ime”窗口通知它输入法已经切换,由于SendMessage是不是同线程调用,所以不会直接去访问窗口的消息函数,而是等待目标线程主动获取消息时再去调用窗口的消息函数返回。问题就出来了,目标线程中根本就没有消息循环,从而导致了死锁。

演示代码如下:

 

  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

  TTest = class(TThread)

 

  private

    procedure ProcessMessage;

 

  protected

    procedure Execute; override;

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TTest.Execute;

begin

  TTimer.Create(nil);   //这个对象创建不为什么,只是为了创建一个隐藏的window,屏蔽这句话线程里就没有窗口了,也不会死机

 

  while not Terminated do

  begin

 //   ProcessMessage;   //去掉这一句就会导致死锁

    Sleep(100);

  end;

end;

 

///内建的一个简单消息循环

procedure TTest.ProcessMessage;

var

  Msg: TMsg;

begin

  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then

  begin

    TranslateMessage(Msg);

    DispatchMessage(Msg);

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  TTest.Create(False);

end;

 

结语

       这个问题我认为系统在发送消息的时候是不是应该使用SendMessageTimeout,这样即使我们这些粗心的程序员不处理,也不至于一直死机。嘿嘿~~~

联系方式

Mailheroyin@gmail.com

出处:http://blog.csdn.net/hero_yin/archive/2008/08/06/2777425.aspx



 
Redfox @ 2009-05-26 00:31

DFMirage Mirror Driver是TightVNC用来抓屏的驱动,可以获取屏幕的变化区域,效率非常高。这个技术非常适合做远程监控、屏幕录制之类的软件。由于TigntVNC是C++的,对于不熟悉C++的DELPHI fans会有点麻烦。这个实例就是参照TightVNC中的代码翻译过来的,希望大家能用得上。

 

使用前请先安装驱动:
http://demoforge.com/dfmirage.htm

{
DFMirage Driver class for delphi

DFMirage is "cutting edge" video driver mirroring technology for the Windows NT OS family.
It is a driver for a virtual video device managed at the DDML level of the graphics system
that exactly mirrors the drawing operations of one or more physical display devices.
A detailed explanation of how a mirroring video driver works may be found in the Windows DDK.

more information by
http://demoforge.com/dfmirage.htm

by heroyin
E-MAIL: heroyin888@sina.com
}
unit VideoDriver;

interface

uses
  SysUtils, Windows, Graphics;

const
  ESC_QVI  =  1026;

  MAP1  =  1030;
  UNMAP1  =  1031;
  _TESTMAPPED  = 1051;

  MAXCHANGES_BUF = 20000;

const

  dmf_dfo_IGNORE    = 0;
  dmf_dfo_FROM_SCREEN = 1;
  dmf_dfo_FROM_DIB  = 2;
  dmf_dfo_TO_SCREEN  = 3;

  dmf_dfo_SCREEN_SCREEN  = 11;
  dmf_dfo_BLIT    = 12;
  dmf_dfo_SOLIDFILL  = 13;
  dmf_dfo_BLEND    = 14;
  dmf_dfo_TRANS    = 15;
  dmf_dfo_PLG      = 17;
  dmf_dfo_TEXTOUT    = 18;

  dmf_dfo_Ptr_Engage  = 48;  // point is used with this record
  dmf_dfo_Ptr_Avert  = 49;

  // 1.0.9.0
  // mode-assert notifications to manifest PDEV limbo status
  dmf_dfn_assert_on  = 64;  // DrvAssert(TRUE): PDEV reenabled
  dmf_dfn_assert_off  = 65;  // DrvAssert(FALSE): PDEV disabled


const

  CDS_UPDATEREGISTRY = {post.abstract}000001;
  CDS_TEST          = {post.abstract}000002;
  CDS_FULLSCREEN     = {post.abstract}000004;
  CDS_GLOBAL         = {post.abstract}000008;
  CDS_SET_PRIMARY    = {post.abstract}000010;
  CDS_RESET          = 000000;
  CDS_SETRECT        = 000000;
  CDS_NORESET        = 000000;

type
{
typedef BOOL (WINAPI* pEnumDisplayDevices)(PVOID,DWORD,PVOID,DWORD);
typedef LONG (WINAPI* pChangeDisplaySettingsEx)(LPCTSTR, LPDEVMODE, HWND, DWORD, LPVOID);
}
//**********

  PCHANGES_RECORD = ^CHANGES_RECORD;
  CHANGES_RECORD = record
    _type: ULONG;  //screen_to_screen, blit, newcache,oldcache
    rect: TRECT;
    origrect: TRECT;
    point: TPOINT;
    color: ULONG; //number used in cache array
    refcolor: ULONG; //slot used to pase btimap data
  end;

  PCHANGES_BUF = ^CHANGES_BUF;
  CHANGES_BUF = record
     counter: ULONG;
    pointrect: array [0..MAXCHANGES_BUF-1] of CHANGES_RECORD;
  end;

  PGETCHANGESBUF = ^GETCHANGESBUF;
  GETCHANGESBUF = record
    buffer: PCHANGES_BUF;
    Userbuffer: Pointer;
  end;

const
  DMF_PROTO_VER_CURRENT = (1 shl 24) or (2 shl 16) or (0 shl 8) or 0;
  DMF_PROTO_VER_MINCOMPAT = (0 shl 24) or (9 shl 16) or (0 shl 8) or 1;


type
  Esc_dmf_Qvi_IN = record
    cbSize: ULONG;
    app_actual_version: ULONG;
    display_minreq_version: ULONG;
    connect_options: ULONG;    // reserved. must be 0.
  end;

const
  esc_qvi_prod_name_max  = 16;


   ESC_QVI_PROD_MIRAGE  = 'MIRAGE';

type

  Esc_dmf_Qvi_OUT = record
    cbSize: ULONG;
    display_actual_version: ULONG;
    miniport_actual_version: ULONG;
    app_minreq_version: ULONG;
    display_buildno: ULONG;
    miniport_buildno: ULONG;
    prod_name: array [0..esc_qvi_prod_name_max-1] of char;
  end;

//////////
const
//  szDriverString = 'Winvnc Video hook driver';
  szDriverString = 'Mirage Driver';
  szDriverStringAlt = 'DemoForge Mirage Driver';
  szMiniportName = 'dfmirage';


  MINIPORT_REGISTRY_PATH = 'SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services';

type
  TVideoDriver = class(TObject)
  private
    FDeviceMode: TDeviceMode;
    m_devname: string;
    m_drv_ver_mj: LongWord;
    m_drv_ver_mn: LongWord;
    m_fDirectAccessInEffect: Boolean;
    m_fHandleScreen2ScreenBlt: Boolean;
    m_fIsActive: Boolean;
    oldCounter: Integer;
  public
    bufdata: GETCHANGESBUF;
    constructor Create;
    destructor Destroy; override;
    function Activate(fForDirectAccess: BOOL; prcltarget: PRect): Boolean;
    function Activate_NT50(fForDirectAccess: BOOL; prcltarget: PRect): Boolean;
    function CheckVersion: Boolean;
    function CreateDeviceKey(szMpName: PChar): HKEY;
    procedure Deactivate;
    procedure Deactivate_NT50;
    function LookupVideoDeviceAlt(szDevStr, szDevStrAlt: PChar; devNum: DWORD; var
        pDd: TDisplayDevice): Boolean;
    function MapSharedbuffers(fForDirectScreenAccess: BOOL): Boolean;
    function TestMapped: Boolean;
    procedure UnMapSharedbuffers;
    property DeviceMode: TDeviceMode read FDeviceMode;
  end;

implementation

uses Math;

const
  ENUM_CURRENT_SETTINGS: DWORD    = DWORD(-1);
  ENUM_REGISTRY_SETTINGS   = -2;


constructor TVideoDriver.Create;
begin
  inherited;
  bufdata.buffer := nil;
  bufdata.Userbuffer := nil;
  m_fIsActive := false;
  m_fDirectAccessInEffect := false;
  m_fHandleScreen2ScreenBlt := false;
  m_devname := '';
  m_drv_ver_mj := 0;
  m_drv_ver_mn := 0;
end;

destructor TVideoDriver.Destroy;
begin
  UnMapSharedbuffers();
  Deactivate();   
  inherited;
end;

function TVideoDriver.CheckVersion: Boolean;
var
  l_gdc: HDC;
  qvi_in: Esc_dmf_Qvi_IN;
  qvi_out: Esc_dmf_Qvi_OUT;
  drvCr: Integer;
begin
  l_gdc := CreateDC(PChar(m_devname), nil, nil, nil);
  if (l_gdc = 0) then
  begin
    Result := False;
    Exit;
  end;

  qvi_in.cbSize := sizeof(qvi_in);
  qvi_in.app_actual_version := DMF_PROTO_VER_CURRENT;
  qvi_in.display_minreq_version := DMF_PROTO_VER_MINCOMPAT;
  qvi_in.connect_options := 0;

  qvi_out.cbSize := sizeof(qvi_out);

  drvCr := ExtEscape(
    l_gdc,
    ESC_QVI,
    sizeof(qvi_in), @qvi_in,
    sizeof(qvi_out), @qvi_out);

  DeleteDC(l_gdc);

  if (drvCr <= 0) then
  begin
    Result := False;
    Exit;
  end;

  m_drv_ver_mj := (qvi_out.display_actual_version shr 24) and $FF;
  m_drv_ver_mn := (qvi_out.display_actual_version shr 16) and $FF;

  Result := True;
end;


function TVideoDriver.LookupVideoDeviceAlt(szDevStr, szDevStrAlt: PChar;
    devNum: DWORD; var pDd: TDisplayDevice): Boolean;
begin
  ZeroMemory(@pDd, sizeof(TDisplayDevice));
  pDd.cb := sizeof(TDisplayDevice);

  while EnumDisplayDevices(nil, devNum, pDd, 0) do
  begin
    if SameText(pDd.DeviceString, szDevStr) or
      ((szDevStrAlt <> nil) and SameText(pDd.DeviceString, szDevStrAlt)) then
    begin
      Result := True;
      Exit;
    end;
    Inc(devNum);
  end;

  Result := False;
end;

function TVideoDriver.MapSharedbuffers(fForDirectScreenAccess: BOOL): Boolean;
var
  l_gdc: HDC;
  drvCr: Integer;
begin
  l_gdc := CreateDC(PChar(m_devname), nil, nil, nil);
  if (l_gdc = 0) then
  begin
    Result := False;
    Exit;
  end;

  oldCounter := 0;
  drvCr := ExtEscape(
    l_gdc,
    MAP1,
    0, nil,
    sizeof(GETCHANGESBUF), @bufdata);
  DeleteDC(l_gdc);

  if (drvCr <= 0) then
  begin
    Result := False;
    Exit;
  end;

  m_fIsActive := true;

  if (fForDirectScreenAccess) then
  begin
    if (bufdata.Userbuffer = nil) then
    begin
      Result := False;
      Exit;
    end;
    m_fDirectAccessInEffect := true;
  end else
  begin
    if (bufdata.Userbuffer <> nil) then
    begin
    end;
  end;

// Screen2Screen support added in Mirage ver 1.2
  m_fHandleScreen2ScreenBlt := (m_drv_ver_mj > 1) or
    ((m_drv_ver_mj = 1) and (m_drv_ver_mn >= 2));

  Result := True;  
end;

function TVideoDriver.TestMapped: Boolean;
var
  pDevName: PChar;
  dd: TDisplayDevice;
  devNum: Integer;
  l_ddc: HDC;
begin
  devNum := 0;
  if (not LookupVideoDeviceAlt(szDriverString, szDriverStringAlt, devNum, dd)) then
  begin
    Result := False;
    Exit;
  end;

  pDevName := dd.DeviceName;

  l_ddc := CreateDC(pDevName, nil, nil, nil);
  if (l_ddc <> 0) then
  begin
    Result := ExtEscape(l_ddc, _TESTMAPPED, 0, nil, 0, nil) <> 0;
    DeleteDC(l_ddc);
  end else
    Result := False;
end;

procedure TVideoDriver.UnMapSharedbuffers;
var
  DrvCr: Integer;
  l_gdc: HDC;
begin
  DrvCr := 0;
  if (m_devname <> '') then
  begin
    l_gdc  := CreateDC(PChar(m_devname), nil, nil, nil);
    if (l_gdc <> 0) then
    begin
      DrvCr := ExtEscape(
        l_gdc,
        UNMAP1,
        sizeof(GETCHANGESBUF), @bufdata,
        0, nil);
      DeleteDC(l_gdc);
    end;
  end;
// 0 return value is unlikely for Mirage because its DC is independent
// from the reference device;
// this happens with Quasar if its mode was changed externally.
// nothing is particularly bad with it.

  if (DrvCr <= 0) then
  begin
    if (bufdata.buffer <> nil) then
    begin
      UnmapViewOfFile(bufdata.buffer);
    end;
    if (bufdata.Userbuffer <> nil) then
    begin
      UnmapViewOfFile(bufdata.Userbuffer);
    end;
  end;
  m_fIsActive := false;
  m_fDirectAccessInEffect := false;
  m_fHandleScreen2ScreenBlt := false;
end;

function TVideoDriver.CreateDeviceKey(szMpName: PChar): HKEY;
var
  hKeyProfileMirror, hKeyProfileMp, hKeyDevice: HKEY;
  cr: DWORD;
begin
  hKeyProfileMirror := 0;
  if (RegCreateKey(
      HKEY_LOCAL_MACHINE,
      (MINIPORT_REGISTRY_PATH),
      hKeyProfileMirror) <> ERROR_SUCCESS) then
  begin
    Result := 0;
    Exit;
  end;

  hKeyProfileMp := 0;
  cr := RegCreateKey(
      hKeyProfileMirror,
      szMpName,
      hKeyProfileMp);
  RegCloseKey(hKeyProfileMirror);
  if (cr <> ERROR_SUCCESS) then
  begin
    Result := 0;
    Exit;
  end;

  hKeyDevice := 0;
  if (RegCreateKey(
      hKeyProfileMp,
      ('DEVICE0'),
      hKeyDevice) <> ERROR_SUCCESS) then
  begin
//    Result := 0;
//    Exit;
  end;

  RegCloseKey(hKeyProfileMp);
  Result := hKeyDevice;
end;

function TVideoDriver.Activate(fForDirectAccess: BOOL; prcltarget: PRect):
    Boolean;
begin
  Result := Activate_NT50(fForDirectAccess, prcltarget);
end;

procedure TVideoDriver.Deactivate;
begin
  Deactivate_NT50();
end;

function TVideoDriver.Activate_NT50(fForDirectAccess: BOOL; prcltarget: PRect):
    Boolean;
var
  hdeskInput, hdeskCurrent: HDESK;
  dd: TDisplayDevice;
  devNum: Integer;
  devmode: TDeviceMode;
  hKeyDevice: HKEY;
  dwVal: DWORD;
begin
  devNum := 0;

  if (not LookupVideoDeviceAlt(szDriverString, szDriverStringAlt, devNum, dd)) then
  begin
    Result := False;
    Exit;
  end;

  FillMemory(@devmode, sizeof(TDeviceMode), 0);
  devmode.dmSize := sizeof(TDeviceMode);
  devmode.dmDriverExtra := 0;
  EnumDisplaySettings(nil, ENUM_CURRENT_SETTINGS, devmode);
  devmode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
  if (prcltarget <> nil) then
  begin
// we always have to set position or
// a stale position info in registry would come into effect.
    devmode.dmFields := devmode.dmFields or DM_POSITION;
    PPoint(@devmode.dmOrientation)^.x := prcltarget.left;
    PPoint(@devmode.dmOrientation)^.y := prcltarget.top;

    devmode.dmPelsWidth := prcltarget.right - prcltarget.left;
    devmode.dmPelsHeight := prcltarget.bottom - prcltarget.top;
  end;

  FillChar(devmode.dmDeviceName, Length(devmode.dmDeviceName), 0);

  
  hKeyDevice := CreateDeviceKey(szMiniportName);
  if (hKeyDevice = 0) then
  begin
    Result := False;
    Exit;
  end;

// TightVNC does not use these features
  RegDeleteValue(hKeyDevice, ('Screen.ForcedBpp'));
  RegDeleteValue(hKeyDevice, ('Pointer.Enabled'));

  dwVal := IfThen(fForDirectAccess, 3, 0);
// NOTE that old driver ignores it and mapping is always ON with it
  if (RegSetValueEx(
      hKeyDevice,
      ('Cap.DfbBackingMode'),
      0,
      REG_DWORD,
      @dwVal,
      4) <> ERROR_SUCCESS) then
  begin
    Result := False;
    Exit;
  end;

  dwVal := 1;
  if (RegSetValueEx(
    hKeyDevice,
    ('Order.BltCopyBits.Enabled'),
    0,
    REG_DWORD,
    @dwVal,
    4) <> ERROR_SUCCESS) then
  begin
    Result := False;
    Exit;
  end;

  dwVal := 1;
  if (RegSetValueEx(
      hKeyDevice,
      ('Attach.ToMyDesktop'),
      0,
      REG_DWORD,
      @dwVal,
      4) <> ERROR_SUCCESS) then
  begin
    Result := False;
    Exit;
  end;

{  dwVal := 16;
  if (RegSetValueEx(
      hKeyDevice,
      ('Screen.ForcedBpp'),
      0,
      REG_DWORD,
      @dwVal,
      4) <> ERROR_SUCCESS) then
  begin
    Result := False;
    Exit;
  end;   }

{  pChangeDisplaySettingsEx pCDS = NULL;
  HINSTANCE  hInstUser32 = LoadNImport("User32.DLL", "ChangeDisplaySettingsExA", pCDS);
  if (!hInstUser32) return FALSE;   }

  // Save the current MyDesktop
  hdeskCurrent := GetThreadDesktop(GetCurrentThreadId());
  hdeskInput := 0;
  if (hdeskCurrent <> 0) then
  begin
    hdeskInput := OpenInputDesktop(0, FALSE, MAXIMUM_ALLOWED);
    if (hdeskInput <> 0) then
      SetThreadDesktop(hdeskInput);
  end;
// 24 bpp screen mode is MUNGED to 32 bpp.
// the underlying buffer format must be 32 bpp.
// see MyDesktop::ThunkBitmapInfo()
  if (devmode.dmBitsPerPel = 24) then devmode.dmBitsPerPel := 32;

  ChangeDisplaySettingsEx(          
    dd.DeviceName,
    devmode,
    0,
    CDS_UPDATEREGISTRY, nil);

  FDeviceMode := devmode;

  m_devname := dd.DeviceName;

  // Reset MyDesktop
  SetThreadDesktop(hdeskCurrent);
  // Close the input MyDesktop
  if hdeskInput <> 0 then
    CloseDesktop(hdeskInput);
    
  RegCloseKey(hKeyDevice);

  Result := True;
end;

procedure TVideoDriver.Deactivate_NT50;
var
  hdeskInput, hdeskCurrent: HDESK;
  dd: TDisplayDevice;
  devNum: Integer;
  devmode: TDeviceMode;
  one: DWORD;
  hKeyDevice: HKEY;
begin
// it is important to us to be able to deactivate
// even what we have never activated. thats why we look it up, all over
//  if (!m_devname[0])
//    return;
// ... and forget the name
  m_devname := '';

  devNum := 0;
  if (not LookupVideoDeviceAlt(szDriverString, szDriverStringAlt, devNum, dd)) then
  begin
    Exit;
  end;

  FillMemory(@devmode, sizeof(TDeviceMode), 0);
  devmode.dmSize := sizeof(TDeviceMode);
  devmode.dmDriverExtra := 0;
  EnumDisplaySettings(nil, ENUM_CURRENT_SETTINGS, devmode);
  devmode.dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
  devmode.dmDeviceName[0] := #0;

  hKeyDevice := CreateDeviceKey(szMiniportName);
  if hKeyDevice = 0 then Exit;

  one := 0;
  RegSetValueEx(hKeyDevice, 'Attach.ToMyDesktop', 0, REG_DWORD, @one,4);

// reverting to default behavior
  RegDeleteValue(hKeyDevice, 'Cap.DfbBackingMode');
  RegDeleteValue(hKeyDevice, 'Order.BltCopyBits.Enabled');

  // Save the current MyDesktop
  hdeskCurrent := GetThreadDesktop(GetCurrentThreadId());
  hdeskInput := 0;
  if (hdeskCurrent <> 0) then
  begin
    hdeskInput := OpenInputDesktop(0, FALSE, MAXIMUM_ALLOWED);
    if (hdeskInput <> 0) then
      SetThreadDesktop(hdeskInput);
  end;
// 24 bpp screen mode is MUNGED to 32 bpp. see MyDesktop::ThunkBitmapInfo()
  if (devmode.dmBitsPerPel = 24) then devmode.dmBitsPerPel := 32;

  // Add 'Default.*' settings to the registry under above hKeyProfile\mirror\device
  ChangeDisplaySettingsEx(dd.DeviceName, devmode, 0, CDS_UPDATEREGISTRY, nil);

  // Reset MyDesktop
  SetThreadDesktop(hdeskCurrent);
  // Close the input MyDesktop
  if hdeskInput <> 0 then
    CloseDesktop(hdeskInput);
  RegCloseKey(hKeyDevice);
end;

end.


出处:http://blog.csdn.net/hero_yin/archive/2008/09/24/2972434.aspx



 
Redfox @ 2009-05-18 23:12

中国司法:请亮出你的贞操来!(热点综述)

题注:最近一段时间以来,没有一个字眼让无数网民如此关注。这个明星就是“司法”。

往前细数:

   1、大便死?

   (新华网呼和浩特5月15日电 )内蒙古自治区公安厅15日10时召开新闻发布会,鄂尔多斯市公安局和达拉旗公安局负责人向新闻媒体通报了犯罪嫌疑人王宝平刑拘期间猝死的过程,并称检察人员已经介入调查,王宝平猝死的原因正在确定中。

    据悉,王宝平因盗窃车辆被强制拘留,期间未有身体异常。5月3日,在大便时倒在在厕所地板上,抢救无效死亡。

    此新闻一出,网易新闻论坛立即哗然一片。有网友第一时间跟帖说道:躲猫猫、做梦梦、洗澡澡欢迎新同志归队:大便便。这上面的每一个名词都与一个死亡的生命有关,他们的死法如出一辙,都是在看守所。特定的地点、离奇的死亡方式,警方的令人瞠目的解释。尽管此案仍然未有结论,但是我们仍然关注着进一步的进展,看这个离奇的事件后面到底隐藏着怎样光怪陆离的风景。

    不过,让我们到回头去看看,躲猫猫事件之后,全国高检副检长就承认了牢头狱霸的存在( http://www.sina.com.cn  2009年03月10日01:40  新京报)。同时我们也就得知了躲猫猫事件后的真相 。

    此次如何,拭目以待。

   2、抑郁症?

    10日晚,湖北巴东县3名官员与女服务员起争执,两人被刺伤,其中一人经抢救无效死亡。争执原因是官员提/特/殊/要求遭拒后用钱抽打女服务员。警方公布调查结果,称服务员可能患抑郁症。(5月13日《现代快报》)

    湖北巴东的招商干部,对在洗衣的女服员提出“特殊服务”要求,人家说不是干这个的,干部们竟咄咄逼人:不“服务”你在这干什么。还拿出一沓钱抽打人家的头,将人家两次按在沙发上。

按某些干部的逻辑:认识我是你的荣幸,还居然不从命,难道反了不成?没想到真碰上一个不好惹的主,给结果了性命——事情的经过就是这样。

   “抑郁症”的说法一出,立即网友质疑声一片。压倒多数的网友认为,邓玉娇是反抗强暴的正当防卫的行为,不应该负刑事责任。抑郁症的说法意图掩盖施暴官员的犯罪行为。甚至有人为邓玉娇叫好,盛赞其为当今女侠,称之为“女杨佳”。还有专业的法律人士公开了自己的联系方式,声明愿意为邓玉娇免费提供法律援助。

    案件调查尚未结束,是否自卫尚难定论。但就事件性质来说,老六以为,邓玉娇不是杨佳。杨佳是报复杀人,受害者是无辜的,尽管他们是警察群体中的一员。单就个体而言,他们是无辜的。报复杀人,理应得到法律的制裁。但是,邓玉娇不是,她是反抗侵犯的自卫行为。抑郁症试图掩盖的是什么?我们不得而知,但是公众不全是傻瓜,我们关注并且关切着。

   3、强奸咋就成了嫖幼?

   据新华社电 (记者李忠将)贵州省习水县嫖宿幼女案有最新进展。5月17日,遵义市人民检察院以被告人袁荣会构成强迫卖淫罪,以被告人冯支洋、母明忠、陈村、冯勇、李守明、黄永亮、陈孟然构成嫖宿幼女罪向遵义市中级人民法院提起公诉。

   四川宜宾县国税局白花分局长卢玉敏,经人介绍,以6000元价格与该县未成年学生何某发生性关系。近日,卢玉敏被行政拘留15日,罚款5000元,警方称卢的行为不构成犯罪。(05月11日《新京报》)

    贵州习水的“嫖幼事件”一时成了互联网上的热点。多数网友引用刑法的规定,认为与不满14周岁的幼女无论在何种情况下的性行为,都构成奸淫幼女罪。毫无疑问,老六也是持这一观点的。但是,现在,仍然检方坚持以“嫖宿”的罪名公诉了嫌疑人。也许,也只能是也许这样可以更好的打击罪犯。

   下面得这个呢。国睡局的局脏呢?除了无语,我们还是无语。连罪都是。

   4、捡来的无期徒刑?

   月入仅千元的机场清洁工,竟然在垃圾桶旁“捡”到一箱价值超过300万元人民币的黄金首饰!令人吃惊的是,这种“当头红运”对这个“幸运儿”来说,却竟然是一个噩梦的开始。因为这笔横财的主角,40岁的清洁工梁丽,有可能要被司法机关以盗窃罪进行起诉,一旦定罪,因为数额巨大,梁丽要面临的最高刑罚是——无期徒刑! !(5月11日广州日报)

   一个机场里淘食的清洁女工,捡来个纸箱,后来发现是金子,穷极之下起了贪心与人私分。失主报警后如数交出。这是个再简单不过的非法占有遗失物的民事案件。可是这个可怜的人就要面临无期徒刑的盗窃的罪名了。

  大多数网友并不是法律专家。他们凭的只是感觉,是感情上的公正。大声的质问来自与比较,为什么贪官贪污受贿百万千万也没有判无期?法律的严苛只是对一个弱贫的情节女工的?质疑声的背后,受质问的是法律和司法的公正。

   5、欺实马?

   杭州的那位爷门胡斌,驾跑车将人撞飞50米远,本就是一起简单的交通事故。当地警方硬是搞不定,有请全国各地的专家分析案情,搞得那么复杂,从5月7日至今,都一个星期了,有关车速的结果仍没得个说法,众专家们都说不便回答。(5月14《钱江晚报》)

   胡斌,一个杭州的富家子弟,喜爱飙车。于是5月7日,胡斌又像往常那样,伙同几个官宦富家子弟,在杭州限速50公里的街道上高速飙车。很不幸,浙江大学一位正准备结婚的大学生谭卓被其迎面撞飞,当场脑浆迸裂惨死。出乎周围群众意料的是,胡斌毫不在乎,不仅未下车,还与及时赶回来的其他官宦富家子弟有说有笑。胡斌的母亲姗姗赶来了,她为自己的儿子说话,长时间地打电话找人,扬言要用钱摆平,对于死者他们从未流露出悔恨和惭愧。

   5.7杭州胡斌飙车案一直备受关注。事情一出,杭州警方根据肇事者的口述,说当时的车速只有“70码”。此言一出,网上质疑声一片。很快,一个听、一个新物种“欺实马”在天涯社区诞生。

尽管杭州警方已经为此道歉( http://www.sina.com.cn  2009年05月16日08:00  新闻晨报),但是,网上的热议仍然如潮。受伤害的是司法的公信力。

  是交通肇事还是以其他方法危害公共安全?老六不是法律专家,但是很倾向于后者。

  这个事件受关注程度,甚至资深的评论家忧心忡忡,担心胡斌成为“张金柱第二”,为舆论所杀。还有的人则公开的坦言,说中国的网民仇官仇富,以舆论绑架司法公正。要老六来说,此话纯属放屁。俺草根网民从来不仇官仇富,仇恨的只是不公。

   老六上学的时候,老师曾经说过,法律应该是一把双刃的利剑,让意图作恶的人有所畏惧,让被侵害的弱者有所依托。而司法应该是清白的处子,与事尘无染。虽万千引诱然刚正无二。然而,一个又一个事件,让我们看到的是,司法一再的被权力和金钱“潜规则”,一再的“被嫖幼“却在公众的质疑声里无力的重复辩解着自己是清白的。 司法,你果真是清白的,那就要事实为根据,亮出你的贞操来!




 
Redfox @ 2009-05-18 23:04

  近日,发生在湖北省巴东县野三关镇的邓玉娇刺杀淫官案,再一次引爆了舆论,成为各大网络媒体舆论关注的焦点。舆论普遍表示了对邓玉娇敢于和邪恶抗争的坚贞刚烈性格的赞许,对其面对恶徒侵害,奋起自卫的行为给予坚决的支持,而其中更多的是对邓玉娇命运的关注。
  邓玉娇的手刃恶徒属自卫行为,大概她被带去调查清楚后就可做无罪判决而获释!然而,事情并不象人们想象的那么简单。因为,故事的主角,被刺身亡的邓贵大不是一般的人,而是野三关政府招商办公室主任。
  有人说,一个镇政府办公室主任,有多大能耐,况且已经一命归西,能影响到司法公正?你恐怕又多虑了吧!
  是的,邓贵大的官并比大,可毕竟也是个官,他的身份代表了一个群体。人说兔死狐悲,猩猩相惜。他的死,会不会给与他有类似行为和心里的某些官员带来一些悲悯。一些官员会不会为了捍卫他所在这个群体的荣誉和尊严在这个案件上做某些手脚?
  我真的希望我的多虑是杞人忧天。我也希望司法将会做出公正的判决,能给社会和舆论一个完满的交代。
  可是现如今,无论什么案子,一沾上“官”字和“钱”字,你就不能用正常思维来考虑,你必需启动匪夷所思的另类思维来做慎慎的思考。
  贵州习水“嫖宿幼女案”重罪轻判的社会舆论余波未息,深圳清洁工捡拾黄金案的无罪(或轻罪)重判的意愿的波澜又起。在惊叹之余,人们没有理由不为邓玉娇的命运而感到担忧!
  在贵州习水嫖宿幼女案的审理过程中,公众本来就对1997年增设的“嫖宿幼女”罪深表质疑。即使按《刑法》规定,罪犯卢玉敏也要被判处五年以上有期徒刑和罚金。然而让人们意料不到的是罪犯却仅仅被作出拘役15天,罚金5000元的轻描淡写的判决。
  判决一出,公众舆论哗然,民众对此种判决表现出极大的不满。然而,任凭你舆论再怎么强大,也扭转不了乾坤。犯罪分子照样逍遥法外,未能得到应有的惩罚。
  无独有偶,与习水嫖宿幼女案形成明显对比的是,在深圳机场一清洁工无意中捡到一包价值近300万元的黄金首饰,却要被按盗窃罪起诉并判以重刑。搜狐网对网友进行的调查表明,有72%的网友表示不该对清洁工判刑。
  习水嫖宿幼女案和清洁工捡拾黄金案,两者判刑意愿和结果为何一轻一重?为何该轻的不轻,该重的不重?
  对比这两个案件,不难发现,其中的不同点在于,一个牵涉的是社会上层的官员,一个涉及的是底层的清洁工。一个应该保护的是无足轻重的普通人家的幼女,一个要保护的是拥有百万家财的富豪。这不由不使人们产生疑问,在涉及到官与民、富人与穷人的案件时,司法还能不能保持公正,司法的倾向究竟是什么?
  习水嫖宿幼女案,已成定局,结果已是有目共睹。邓玉娇刺杀淫官案,正在调查中,可是这种倾向性似乎已经是初露倪端。
  在公布的案情调查中有一些问题值得引起人们注意。
  一是公布的调查结果中似乎隐去了一些细节,让人心生狐疑,对事件的发展不可理解。邓贵大等人,去了怎么就直奔休息室,怎么就恰好碰见邓玉娇在洗衣服。休息室既是客人休息的地方,梦幻城管理人员会允许自己的工作人员在里边是洗衣服吗?
  二是邓贵大等人到梦幻城去寻花问柳,寻欢做乐,为什么非得缠上邓玉娇?可以想见,在他们心里,身处那种场合的女性应该都是可以提供那种特殊服务的。当他们第一次遭到拒绝时,他们以为是没有承诺给钱。
  当他们把一叠钱掏出来,在邓玉娇面前显摆时,遭到的仍然是拒绝。这时他们应该完全明白,邓玉娇根本就不是干那种事情的人。那种场合能够满足他们特殊需求的人多的是,他们完全可以再去找别的自愿者。为什么非要缠住邓玉娇。这种结果只会有一种解释,那就是邓贵大等提前就已经瞄上了邓玉娇。
  对于上述两点,不知办案人员是何解释?不他们知是没有注意了解呢,还是要刻意隐瞒。这里面到底暗藏着什么玄机?
  三是警方通过一些情节认定邓玉娇有抑郁症。不知抑郁症和本案有什么关系。是不是有抑郁症就会对本案的判定会构成某种影响,到底会是什么影响?是不是要为邓玉娇定罪埋下某种伏笔?对于这些,愚顿的百姓都不得而知。
  可是我们心里清楚,当一个人受到不法侵害时,完全有权利进行正当防卫。不管他是不是有抑郁症。难道患有抑郁症的人就没有正当防卫的权利了吗?再说,在那种万分危急的情况下,那能容许你象实习的医生解抛尸体一样,仔细的斟酌这一刀下去应该扎在什么地方才不至于防卫过当。
  对这一案件的审理,司法是否能站在公正的立场上,而不是用金钱和地位来作为判断是非的标准?案件的审理结果是否会成为一个官官相护的佐证?对于心中的所有疑问,人们都在等待着一个最终的判决结果。
  从某种意义来说,邓玉娇案的审理也将再次拷问某些司法人员的正义和良知!
  相关链接
【华声在线】本文网址:http://opinion.voc.com.cn/article/200905/200905181417071894.html



 
日历
网志分类
『所有网志』 (458)
心情故事 (153)
我的作品 (1)
网文经典 (114)
国家大事 (31)
诗词曲赋 (15)
lrc歌词 (10)
电脑技术 (1)
Win32i编程 (23)
.Net 技術 (2)
Java学习笔记 (30)
Internet/TCP/UDP (17)
OOP与设计模式 (1)
美图欣赏 (5)
Web与XML (22)
蓝牙技术 (8)
Win32ASM (2)
Flash & SilverLight (1)
最新留言
06/21 [:Yeah:]
05/27 就一句话?![...
05/15 [:Autom...
站内搜索
友情链接
[我的歪酷]
分享 Java
J2ME电子书
站在大世界
阳光人才网 - 我的人才库
yczealot的所行所思所感
FreeBSD 中文手册
moonight
皮皮鲁鲁西西
PiggyXP【小猪】的专栏
淡月儿(CSDN水园第一才女)
roboMM的网上家园 (J2ME笔记)
你刻骨铭心,我云淡风清
Web2.0 資料
我的ys168空间
gcp 的空间
老头子土地
苏吴子弟
中国艺术
何新论坛
全国 IT 公司速查手册
seule的家庭主妇笔记
我的 efile 空间
DAVY's pad—住家男人备妄录
董事长日志
一百万个工具下载
食色性也(一个女生的 Blog)
往事并不如烟
gssoft (X的家)
润物有声
轻风细雨
~仙乐处处闻~
接触中国
品味辣鸡块
母猪女郎
北京女病人
Java研究组织
我和西藏有个约会
DEV365
麦田跑望者
茅十七的家(笑死神仙不偿命)
大寶 SODME (網絡)
sherrylso (C++,net)
雲風的Blog (網游)
订阅 RSS
0140637
歪酷博客